From d060e870686b754b0c7b64da40d8c2c290e8d588 Mon Sep 17 00:00:00 2001 From: Yasuhito Takamiya Date: Wed, 5 Jun 2024 11:11:02 +0900 Subject: [PATCH] remove Matrix.identity --- apps/tutorial/serviceworker.js | 10 ++--- apps/tutorial/serviceworker.js.map | 6 +-- packages/simulator/src/matrix.ts | 15 ------- packages/simulator/test/matrix.test.ts | 57 ++++++++++++++++---------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/apps/tutorial/serviceworker.js b/apps/tutorial/serviceworker.js index 88a416ee1..79b814be2 100644 --- a/apps/tutorial/serviceworker.js +++ b/apps/tutorial/serviceworker.js @@ -2,16 +2,16 @@ `)!==-1&&(b=r.spacingOuter+d+b+r.spacingOuter+a),b=`{${b}}`),`${r.spacingInner+a+g.prop.open+f+g.prop.close}=${g.value.open}${b}${g.value.close}`}).join("")},"printProps");J.printProps=oi;var ci=c((t,e,r,a,n,i)=>t.map(u=>e.spacingOuter+r+(typeof u=="string"?Pr(u,e):i(u,e,r,a,n))).join(""),"printChildren");J.printChildren=ci;var Pr=c((t,e)=>{let r=e.colors.content;return r.open+(0,kr.default)(t)+r.close},"printText");J.printText=Pr;var hi=c((t,e)=>{let r=e.colors.comment;return`${r.open}${r.close}`},"printComment");J.printComment=hi;var pi=c((t,e,r,a,n)=>{let i=a.colors.tag;return`${i.open}<${t}${e&&i.close+e+a.spacingOuter+n+i.open}${r?`>${i.close}${r}${a.spacingOuter}${n}${i.open}${i.close}`},"printElement");J.printElement=pi;var li=c((t,e)=>{let r=e.colors.tag;return`${r.open}<${t}${r.close} \u2026${r.open} />${r.close}`},"printElementAsLeaf");J.printElementAsLeaf=li});var Ur=G(pe=>{"use strict";Object.defineProperty(pe,"__esModule",{value:!0});pe.test=pe.serialize=pe.default=void 0;var $e=He(),fi=1,Br=3,jr=8,Dr=11,Ci=/^((HTML|SVG)\w*)?Element$/,si=c(t=>{try{return typeof t.hasAttribute=="function"&&t.hasAttribute("is")}catch{return!1}},"testHasAttribute"),di=c(t=>{let e=t.constructor.name,{nodeType:r,tagName:a}=t,n=typeof a=="string"&&a.includes("-")||si(t);return r===fi&&(Ci.test(e)||n)||r===Br&&e==="Text"||r===jr&&e==="Comment"||r===Dr&&e==="DocumentFragment"},"testNode"),Rr=c(t=>t?.constructor?.name&&di(t),"test");pe.test=Rr;function mi(t){return t.nodeType===Br}c(mi,"nodeIsText");function bi(t){return t.nodeType===jr}c(bi,"nodeIsComment");function jt(t){return t.nodeType===Dr}c(jt,"nodeIsFragment");var Fr=c((t,e,r,a,n,i)=>{if(mi(t))return(0,$e.printText)(t.data,e);if(bi(t))return(0,$e.printComment)(t.data,e);let u=jt(t)?"DocumentFragment":t.tagName.toLowerCase();return++a>e.maxDepth?(0,$e.printElementAsLeaf)(u,e):(0,$e.printElement)(u,(0,$e.printProps)(jt(t)?[]:Array.from(t.attributes).map(d=>d.name).sort(),jt(t)?{}:Array.from(t.attributes).reduce((d,g)=>(d[g.name]=g.value,d),{}),e,r+e.indent,a,n,i),(0,$e.printChildren)(Array.prototype.slice.call(t.childNodes||t.children),e,r+e.indent,a,n,i),e,r)},"serialize");pe.serialize=Fr;var gi={serialize:Fr,test:Rr},vi=gi;pe.default=vi});var Vr=G(le=>{"use strict";Object.defineProperty(le,"__esModule",{value:!0});le.test=le.serialize=le.default=void 0;var Re=De(),yi="@@__IMMUTABLE_ITERABLE__@@",wi="@@__IMMUTABLE_LIST__@@",xi="@@__IMMUTABLE_KEYED__@@",Ei="@@__IMMUTABLE_MAP__@@",qr="@@__IMMUTABLE_ORDERED__@@",Mi="@@__IMMUTABLE_RECORD__@@",Si="@@__IMMUTABLE_SEQ__@@",Oi="@@__IMMUTABLE_SET__@@",Ai="@@__IMMUTABLE_STACK__@@",Te=c(t=>`Immutable.${t}`,"getImmutableName"),Qe=c(t=>`[${t}]`,"printAsLeaf"),Fe=" ",Lr="\u2026",Ni=c((t,e,r,a,n,i,u)=>++a>e.maxDepth?Qe(Te(u)):`${Te(u)+Fe}{${(0,Re.printIteratorEntries)(t.entries(),e,r,a,n,i)}}`,"printImmutableEntries");function _i(t){let e=0;return{next(){if(e{let u=Te(t._name||"Record");return++a>e.maxDepth?Qe(u):`${u+Fe}{${(0,Re.printIteratorEntries)(_i(t),e,r,a,n,i)}}`},"printImmutableRecord"),$i=c((t,e,r,a,n,i)=>{let u=Te("Seq");return++a>e.maxDepth?Qe(u):t[xi]?`${u+Fe}{${t._iter||t._object?(0,Re.printIteratorEntries)(t.entries(),e,r,a,n,i):Lr}}`:`${u+Fe}[${t._iter||t._array||t._collection||t._iterable?(0,Re.printIteratorValues)(t.values(),e,r,a,n,i):Lr}]`},"printImmutableSeq"),Dt=c((t,e,r,a,n,i,u)=>++a>e.maxDepth?Qe(Te(u)):`${Te(u)+Fe}[${(0,Re.printIteratorValues)(t.values(),e,r,a,n,i)}]`,"printImmutableValues"),zr=c((t,e,r,a,n,i)=>t[Ei]?Ni(t,e,r,a,n,i,t[qr]?"OrderedMap":"Map"):t[wi]?Dt(t,e,r,a,n,i,"List"):t[Oi]?Dt(t,e,r,a,n,i,t[qr]?"OrderedSet":"Set"):t[Ai]?Dt(t,e,r,a,n,i,"Stack"):t[Si]?$i(t,e,r,a,n,i):Ii(t,e,r,a,n,i),"serialize");le.serialize=zr;var Wr=c(t=>t&&(t[yi]===!0||t[Mi]===!0),"test");le.test=Wr;var Ti={serialize:zr,test:Wr},ki=Ti;le.default=ki});var Zr=G(k=>{"use strict";var Rt=Symbol.for("react.element"),Ft=Symbol.for("react.portal"),Ye=Symbol.for("react.fragment"),et=Symbol.for("react.strict_mode"),tt=Symbol.for("react.profiler"),rt=Symbol.for("react.provider"),at=Symbol.for("react.context"),Pi=Symbol.for("react.server_context"),nt=Symbol.for("react.forward_ref"),it=Symbol.for("react.suspense"),ut=Symbol.for("react.suspense_list"),ot=Symbol.for("react.memo"),ct=Symbol.for("react.lazy"),Bi=Symbol.for("react.offscreen"),Gr;Gr=Symbol.for("react.module.reference");function H(t){if(typeof t=="object"&&t!==null){var e=t.$$typeof;switch(e){case Rt:switch(t=t.type,t){case Ye:case tt:case et:case it:case ut:return t;default:switch(t=t&&t.$$typeof,t){case Pi:case at:case nt:case ct:case ot:case rt:return t;default:return e}}case Ft:return e}}}c(H,"v");k.ContextConsumer=at;k.ContextProvider=rt;k.Element=Rt;k.ForwardRef=nt;k.Fragment=Ye;k.Lazy=ct;k.Memo=ot;k.Portal=Ft;k.Profiler=tt;k.StrictMode=et;k.Suspense=it;k.SuspenseList=ut;k.isAsyncMode=function(){return!1};k.isConcurrentMode=function(){return!1};k.isContextConsumer=function(t){return H(t)===at};k.isContextProvider=function(t){return H(t)===rt};k.isElement=function(t){return typeof t=="object"&&t!==null&&t.$$typeof===Rt};k.isForwardRef=function(t){return H(t)===nt};k.isFragment=function(t){return H(t)===Ye};k.isLazy=function(t){return H(t)===ct};k.isMemo=function(t){return H(t)===ot};k.isPortal=function(t){return H(t)===Ft};k.isProfiler=function(t){return H(t)===tt};k.isStrictMode=function(t){return H(t)===et};k.isSuspense=function(t){return H(t)===it};k.isSuspenseList=function(t){return H(t)===ut};k.isValidElementType=function(t){return typeof t=="string"||typeof t=="function"||t===Ye||t===tt||t===et||t===it||t===ut||t===Bi||typeof t=="object"&&t!==null&&(t.$$typeof===ct||t.$$typeof===ot||t.$$typeof===rt||t.$$typeof===at||t.$$typeof===nt||t.$$typeof===Gr||t.getModuleId!==void 0)};k.typeOf=H});var Kr=G((Yu,Jr)=>{"use strict";Jr.exports=Zr()});var ta=G(fe=>{"use strict";Object.defineProperty(fe,"__esModule",{value:!0});fe.test=fe.serialize=fe.default=void 0;var Me=ji(Kr()),ht=He();function Hr(t){if(typeof WeakMap!="function")return null;var e=new WeakMap,r=new WeakMap;return(Hr=c(function(a){return a?r:e},"_getRequireWildcardCache"))(t)}c(Hr,"_getRequireWildcardCache");function ji(t,e){if(!e&&t&&t.__esModule)return t;if(t===null||typeof t!="object"&&typeof t!="function")return{default:t};var r=Hr(e);if(r&&r.has(t))return r.get(t);var a={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in t)if(i!=="default"&&Object.prototype.hasOwnProperty.call(t,i)){var u=n?Object.getOwnPropertyDescriptor(t,i):null;u&&(u.get||u.set)?Object.defineProperty(a,i,u):a[i]=t[i]}return a.default=t,r&&r.set(t,a),a}c(ji,"_interopRequireWildcard");var Qr=c((t,e=[])=>(Array.isArray(t)?t.forEach(r=>{Qr(r,e)}):t!=null&&t!==!1&&e.push(t),e),"getChildren"),Xr=c(t=>{let e=t.type;if(typeof e=="string")return e;if(typeof e=="function")return e.displayName||e.name||"Unknown";if(Me.isFragment(t))return"React.Fragment";if(Me.isSuspense(t))return"React.Suspense";if(typeof e=="object"&&e!==null){if(Me.isContextProvider(t))return"Context.Provider";if(Me.isContextConsumer(t))return"Context.Consumer";if(Me.isForwardRef(t)){if(e.displayName)return e.displayName;let r=e.render.displayName||e.render.name||"";return r!==""?`ForwardRef(${r})`:"ForwardRef"}if(Me.isMemo(t)){let r=e.displayName||e.type.displayName||e.type.name||"";return r!==""?`Memo(${r})`:"Memo"}}return"UNDEFINED"},"getType"),Di=c(t=>{let{props:e}=t;return Object.keys(e).filter(r=>r!=="children"&&e[r]!==void 0).sort()},"getPropKeys"),Yr=c((t,e,r,a,n,i)=>++a>e.maxDepth?(0,ht.printElementAsLeaf)(Xr(t),e):(0,ht.printElement)(Xr(t),(0,ht.printProps)(Di(t),t.props,e,r+e.indent,a,n,i),(0,ht.printChildren)(Qr(t.props.children),e,r+e.indent,a,n,i),e,r),"serialize");fe.serialize=Yr;var ea=c(t=>t!=null&&Me.isElement(t),"test");fe.test=ea;var Ri={serialize:Yr,test:ea},Fi=Ri;fe.default=Fi});var na=G(Ce=>{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.test=Ce.serialize=Ce.default=void 0;var pt=He(),Ut=globalThis["jest-symbol-do-not-touch"]||globalThis.Symbol,Ui=typeof Ut=="function"&&Ut.for?Ut.for("react.test.json"):245830487,qi=c(t=>{let{props:e}=t;return e?Object.keys(e).filter(r=>e[r]!==void 0).sort():[]},"getPropKeys"),ra=c((t,e,r,a,n,i)=>++a>e.maxDepth?(0,pt.printElementAsLeaf)(t.type,e):(0,pt.printElement)(t.type,t.props?(0,pt.printProps)(qi(t),t.props,e,r+e.indent,a,n,i):"",t.children?(0,pt.printChildren)(t.children,e,r+e.indent,a,n,i):"",e,r),"serialize");Ce.serialize=ra;var aa=c(t=>t&&t.$$typeof===Ui,"test");Ce.test=aa;var Li={serialize:ra,test:aa},zi=Li;Ce.default=zi});var ya=G(ie=>{"use strict";Object.defineProperty(ie,"__esModule",{value:!0});ie.default=ie.DEFAULT_OPTIONS=void 0;ie.format=va;ie.plugins=void 0;var Wi=Se(xr()),Ue=De(),Vi=Se(Or()),Gi=Se($r()),Zi=Se(Ur()),Ji=Se(Vr()),Ki=Se(ta()),Xi=Se(na());function Se(t){return t&&t.__esModule?t:{default:t}}c(Se,"_interopRequireDefault");var pa=Object.prototype.toString,Hi=Date.prototype.toISOString,Qi=Error.prototype.toString,ia=RegExp.prototype.toString,qt=c(t=>typeof t.constructor=="function"&&t.constructor.name||"Object","getConstructorName"),Yi=c(t=>typeof window<"u"&&t===window,"isWindow"),eu=/^Symbol\((.*)\)(.*)$/,tu=/\n/gi,lt=class extends Error{static{c(this,"PrettyFormatPluginError")}constructor(e,r){super(e),this.stack=r,this.name=this.constructor.name}};function ru(t){return t==="[object Array]"||t==="[object ArrayBuffer]"||t==="[object DataView]"||t==="[object Float32Array]"||t==="[object Float64Array]"||t==="[object Int8Array]"||t==="[object Int16Array]"||t==="[object Int32Array]"||t==="[object Uint8Array]"||t==="[object Uint8ClampedArray]"||t==="[object Uint16Array]"||t==="[object Uint32Array]"}c(ru,"isToStringedArrayType");function au(t){return Object.is(t,-0)?"-0":String(t)}c(au,"printNumber");function nu(t){return`${t}n`}c(nu,"printBigInt");function ua(t,e){return e?`[Function ${t.name||"anonymous"}]`:"[Function]"}c(ua,"printFunction");function oa(t){return String(t).replace(eu,"Symbol($1)")}c(oa,"printSymbol");function ca(t){return`[${Qi.call(t)}]`}c(ca,"printError");function la(t,e,r,a){if(t===!0||t===!1)return`${t}`;if(t===void 0)return"undefined";if(t===null)return"null";let n=typeof t;if(n==="number")return au(t);if(n==="bigint")return nu(t);if(n==="string")return a?`"${t.replace(/"|\\/g,"\\$&")}"`:`"${t}"`;if(n==="function")return ua(t,e);if(n==="symbol")return oa(t);let i=pa.call(t);return i==="[object WeakMap]"?"WeakMap {}":i==="[object WeakSet]"?"WeakSet {}":i==="[object Function]"||i==="[object GeneratorFunction]"?ua(t,e):i==="[object Symbol]"?oa(t):i==="[object Date]"?isNaN(+t)?"Date { NaN }":Hi.call(t):i==="[object Error]"?ca(t):i==="[object RegExp]"?r?ia.call(t).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&"):ia.call(t):t instanceof Error?ca(t):null}c(la,"printBasicValue");function fa(t,e,r,a,n,i){if(n.indexOf(t)!==-1)return"[Circular]";n=n.slice(),n.push(t);let u=++a>e.maxDepth,d=e.min;if(e.callToJSON&&!u&&t.toJSON&&typeof t.toJSON=="function"&&!i)return se(t.toJSON(),e,r,a,n,!0);let g=pa.call(t);return g==="[object Arguments]"?u?"[Arguments]":`${d?"":"Arguments "}[${(0,Ue.printListItems)(t,e,r,a,n,se)}]`:ru(g)?u?`[${t.constructor.name}]`:`${d||!e.printBasicPrototype&&t.constructor.name==="Array"?"":`${t.constructor.name} `}[${(0,Ue.printListItems)(t,e,r,a,n,se)}]`:g==="[object Map]"?u?"[Map]":`Map {${(0,Ue.printIteratorEntries)(t.entries(),e,r,a,n,se," => ")}}`:g==="[object Set]"?u?"[Set]":`Set {${(0,Ue.printIteratorValues)(t.values(),e,r,a,n,se)}}`:u||Yi(t)?`[${qt(t)}]`:`${d||!e.printBasicPrototype&&qt(t)==="Object"?"":`${qt(t)} `}{${(0,Ue.printObjectProperties)(t,e,r,a,n,se)}}`}c(fa,"printComplexValue");function iu(t){return t.serialize!=null}c(iu,"isNewPlugin");function Ca(t,e,r,a,n,i){let u;try{u=iu(t)?t.serialize(e,r,a,n,i,se):t.print(e,d=>se(d,r,a,n,i),d=>{let g=a+r.indent;return g+d.replace(tu,` ${g}`)},{edgeSpacing:r.spacingOuter,min:r.min,spacing:r.spacingInner},r.colors)}catch(d){throw new lt(d.message,d.stack)}if(typeof u!="string")throw new Error(`pretty-format: Plugin must return type "string" but instead returned "${typeof u}".`);return u}c(Ca,"printPlugin");function sa(t,e){for(let r=0;rt,"toOptionsSubtype"),Q=uu({callToJSON:!0,compareKeys:void 0,escapeRegex:!1,escapeString:!0,highlight:!1,indent:2,maxDepth:1/0,maxWidth:1/0,min:!1,plugins:[],printBasicPrototype:!0,printFunctionName:!0,theme:Lt});ie.DEFAULT_OPTIONS=Q;function ou(t){if(Object.keys(t).forEach(e=>{if(!Object.prototype.hasOwnProperty.call(Q,e))throw new Error(`pretty-format: Unknown option "${e}".`)}),t.min&&t.indent!==void 0&&t.indent!==0)throw new Error('pretty-format: Options "min" and "indent" cannot be used together.');if(t.theme!==void 0){if(t.theme===null)throw new Error('pretty-format: Option "theme" must not be null.');if(typeof t.theme!="object")throw new Error(`pretty-format: Option "theme" must be of type "object" but instead received "${typeof t.theme}".`)}}c(ou,"validateOptions");var cu=c(t=>da.reduce((e,r)=>{let a=t.theme&&t.theme[r]!==void 0?t.theme[r]:Lt[r],n=a&&Wi.default[a];if(n&&typeof n.close=="string"&&typeof n.open=="string")e[r]=n;else throw new Error(`pretty-format: Option "theme" has a key "${r}" whose value "${a}" is undefined in ansi-styles.`);return e},Object.create(null)),"getColorsHighlight"),hu=c(()=>da.reduce((t,e)=>(t[e]={close:"",open:""},t),Object.create(null)),"getColorsEmpty"),ma=c(t=>t?.printFunctionName??Q.printFunctionName,"getPrintFunctionName"),ba=c(t=>t?.escapeRegex??Q.escapeRegex,"getEscapeRegex"),ga=c(t=>t?.escapeString??Q.escapeString,"getEscapeString"),ha=c(t=>({callToJSON:t?.callToJSON??Q.callToJSON,colors:t?.highlight?cu(t):hu(),compareKeys:typeof t?.compareKeys=="function"||t?.compareKeys===null?t.compareKeys:Q.compareKeys,escapeRegex:ba(t),escapeString:ga(t),indent:t?.min?"":pu(t?.indent??Q.indent),maxDepth:t?.maxDepth??Q.maxDepth,maxWidth:t?.maxWidth??Q.maxWidth,min:t?.min??Q.min,plugins:t?.plugins??Q.plugins,printBasicPrototype:t?.printBasicPrototype??!0,printFunctionName:ma(t),spacingInner:t?.min?" ":` `,spacingOuter:t?.min?"":` -`}),"getConfig");function pu(t){return new Array(t+1).join(" ")}c(pu,"createIndent");function va(t,e){if(e&&(ou(e),e.plugins)){let a=sa(e.plugins,t);if(a!==null)return Ca(a,t,ha(e),"",0,[])}let r=la(t,ma(e),ba(e),ga(e));return r!==null?r:fa(t,ha(e),"",0,[])}c(va,"format");var lu={AsymmetricMatcher:Vi.default,DOMCollection:Gi.default,DOMElement:Zi.default,Immutable:Ji.default,ReactElement:Ki.default,ReactTestComponent:Xi.default};ie.plugins=lu;var fu=va;ie.default=fu});var Fa=c(function(t){return function(e){for(var r=Math.max(0,Math.floor(e)),a=[t(0)],n=1;ne in t?_t(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,"fh"),Va=c((t,e)=>{for(var r in e||(e={}))ar.call(e,r)&&Qt(t,r,e[r]);if(Ht)for(var r of Ht(e))Wa.call(e,r)&&Qt(t,r,e[r]);return t},"bh"),Z=c((t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),"k"),Ga=c((t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of La(e))!ar.call(t,n)&&n!==r&&_t(t,n,{get:()=>e[n],enumerable:!(a=qa(e,n))||a.enumerable});return t},"pn"),nr=c((t,e,r)=>(r=t!=null?Ua(za(t)):{},Ga(e||!t||!t.__esModule?_t(r,"default",{value:t,enumerable:!0}):r,t)),"dh"),Za=Z((t,e)=>{(function(r){"use strict";var a=2e3,n={s:1,n:0,d:1};function i(o,p){if(isNaN(o=parseInt(o,10)))throw l.InvalidParameter;return o*p}c(i,"n");function u(o,p){if(p===0)throw l.DivisionByZero;var C=Object.create(l.prototype);C.s=o<0?-1:1,o=o<0?-o:o;var s=h(o,p);return C.n=o/s,C.d=p/s,C}c(u,"i");function d(o){for(var p={},C=o,s=2,y=4;y<=C;){for(;C%s===0;)C/=s,p[s]=(p[s]||0)+1;y+=1+2*s++}return C!==o?C>1&&(p[C]=(p[C]||0)+1):p[o]=(p[o]||0)+1,p}c(d,"p");var g=c(function(o,p){var C=0,s=1,y=1,A=0,O=0,P=0,M=1,E=1,w=0,x=1,I=1,_=1,B=1e7,j;if(o!=null)if(p!==void 0){if(C=o,s=p,y=C*s,C%1!==0||s%1!==0)throw l.NonIntegerParameter}else switch(typeof o){case"object":{if("d"in o&&"n"in o)C=o.n,s=o.d,"s"in o&&(C*=o.s);else if(0 in o)C=o[0],1 in o&&(s=o[1]);else throw l.InvalidParameter;y=C*s;break}case"number":{if(o<0&&(y=o,o=-o),o%1===0)C=o;else if(o>0){for(o>=1&&(E=Math.pow(10,Math.floor(1+Math.log(o)/Math.LN10)),o/=E);x<=B&&_<=B;)if(j=(w+I)/(x+_),o===j){x+_<=B?(C=w+I,s=x+_):_>x?(C=I,s=_):(C=w,s=x);break}else o>j?(w+=I,x+=_):(I+=w,_+=x),x>B?(C=I,s=_):(C=w,s=x);C*=E}else(isNaN(o)||isNaN(p))&&(s=C=NaN);break}case"string":{if(x=o.match(/\d+|./g),x===null)throw l.InvalidParameter;if(x[w]==="-"?(y=-1,w++):x[w]==="+"&&w++,x.length===w+1?O=i(x[w++],y):x[w+1]==="."||x[w]==="."?(x[w]!=="."&&(A=i(x[w++],y)),w++,(w+1===x.length||x[w+1]==="("&&x[w+3]===")"||x[w+1]==="'"&&x[w+3]==="'")&&(O=i(x[w],y),M=Math.pow(10,x[w].length),w++),(x[w]==="("&&x[w+2]===")"||x[w]==="'"&&x[w+2]==="'")&&(P=i(x[w+1],y),E=Math.pow(10,x[w+1].length)-1,w+=3)):x[w+1]==="/"||x[w+1]===":"?(O=i(x[w],y),M=i(x[w+2],1),w+=3):x[w+3]==="/"&&x[w+1]===" "&&(A=i(x[w],y),O=i(x[w+2],y),M=i(x[w+4],1),w+=5),x.length<=w){s=M*E,y=C=P+s*A+E*O;break}}default:throw l.InvalidParameter}if(s===0)throw l.DivisionByZero;n.s=y<0?-1:1,n.n=Math.abs(C),n.d=Math.abs(s)},"e");function f(o,p,C){for(var s=1;p>0;o=o*o%C,p>>=1)p&1&&(s=s*o%C);return s}c(f,"l");function v(o,p){for(;p%2===0;p/=2);for(;p%5===0;p/=5);if(p===1)return 0;for(var C=10%p,s=1;C!==1;s++)if(C=C*10%p,s>a)return 0;return s}c(v,"d");function b(o,p,C){for(var s=1,y=f(10,C,p),A=0;A<300;A++){if(s===y)return A;s=s*10%p,y=y*10%p}return 0}c(b,"b");function h(o,p){if(!o)return p;if(!p)return o;for(;;){if(o%=p,!o)return p;if(p%=o,!p)return o}}c(h,"x");function l(o,p){if(g(o,p),this instanceof l)o=h(n.d,n.n),this.s=n.s,this.n=n.n/o,this.d=n.d/o;else return u(n.s*n.n,n.d)}c(l,"w"),l.DivisionByZero=new Error("Division by Zero"),l.InvalidParameter=new Error("Invalid argument"),l.NonIntegerParameter=new Error("Parameters must be integer"),l.prototype={s:1,n:0,d:1,abs:function(){return u(this.n,this.d)},neg:function(){return u(-this.s*this.n,this.d)},add:function(o,p){return g(o,p),u(this.s*this.n*n.d+n.s*this.d*n.n,this.d*n.d)},sub:function(o,p){return g(o,p),u(this.s*this.n*n.d-n.s*this.d*n.n,this.d*n.d)},mul:function(o,p){return g(o,p),u(this.s*n.s*this.n*n.n,this.d*n.d)},div:function(o,p){return g(o,p),u(this.s*n.s*this.n*n.d,this.d*n.n)},clone:function(){return u(this.s*this.n,this.d)},mod:function(o,p){if(isNaN(this.n)||isNaN(this.d))return new l(NaN);if(o===void 0)return u(this.s*this.n%this.d,1);if(g(o,p),n.n===0&&this.d===0)throw l.DivisionByZero;return u(this.s*(n.d*this.n)%(n.n*this.d),n.d*this.d)},gcd:function(o,p){return g(o,p),u(h(n.n,this.n)*h(n.d,this.d),n.d*this.d)},lcm:function(o,p){return g(o,p),n.n===0&&this.n===0?u(0,1):u(n.n*this.n,h(n.n,this.n)*h(n.d,this.d))},ceil:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.ceil(o*this.s*this.n/this.d),o)},floor:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.floor(o*this.s*this.n/this.d),o)},round:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.round(o*this.s*this.n/this.d),o)},inverse:function(){return u(this.s*this.d,this.n)},pow:function(o,p){if(g(o,p),n.d===1)return n.s<0?u(Math.pow(this.s*this.d,n.n),Math.pow(this.n,n.n)):u(Math.pow(this.s*this.n,n.n),Math.pow(this.d,n.n));if(this.s<0)return null;var C=d(this.n),s=d(this.d),y=1,A=1;for(var O in C)if(O!=="1"){if(O==="0"){y=0;break}if(C[O]*=n.n,C[O]%n.d===0)C[O]/=n.d;else return null;y*=Math.pow(O,C[O])}for(var O in s)if(O!=="1"){if(s[O]*=n.n,s[O]%n.d===0)s[O]/=n.d;else return null;A*=Math.pow(O,s[O])}return n.s<0?u(A,y):u(y,A)},equals:function(o,p){return g(o,p),this.s*this.n*n.d===n.s*n.n*this.d},compare:function(o,p){g(o,p);var C=this.s*this.n*n.d-n.s*n.n*this.d;return(0=0;A--)y=y.inverse().add(C[A]);if(y.sub(p).abs().valueOf()0&&(C+=p,C+=" ",s%=y),C+=s,C+="/",C+=y),C},toLatex:function(o){var p,C="",s=this.n,y=this.d;return this.s<0&&(C+="-"),y===1?C+=s:(o&&(p=Math.floor(s/y))>0&&(C+=p,s%=y),C+="\\frac{",C+=s,C+="}{",C+=y,C+="}"),C},toContinued:function(){var o,p=this.n,C=this.d,s=[];if(isNaN(p)||isNaN(C))return s;do s.push(Math.floor(p/C)),o=p%C,p=C,C=o;while(p!==1);return s},toString:function(o){var p=this.n,C=this.d;if(isNaN(p)||isNaN(C))return"NaN";o=o||15;var s=v(p,C),y=b(p,C,s),A=this.s<0?"-":"";if(A+=p/C|0,p%=C,p*=10,p&&(A+="."),s){for(var O=y;O--;)A+=p/C|0,p%=C,p*=10;A+="(";for(var O=s;O--;)A+=p/C|0,p%=C,p*=10;A+=")"}else for(var O=o;p&&O--;)A+=p/C|0,p%=C,p*=10;return A}},typeof define=="function"&&define.amd?define([],function(){return l}):typeof t=="object"?(Object.defineProperty(l,"__esModule",{value:!0}),l.default=l,l.Fraction=l,e.exports=l):r.Fraction=l})(t)}),Ja=Z((t,e)=>{"use strict";var r=c((i=0)=>u=>`\x1B[${38+i};5;${u}m`,"Sh"),a=c((i=0)=>(u,d,g)=>`\x1B[${38+i};2;${u};${d};${g}m`,"Eh");function n(){let i=new Map,u={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};u.color.gray=u.color.blackBright,u.bgColor.bgGray=u.bgColor.bgBlackBright,u.color.grey=u.color.blackBright,u.bgColor.bgGrey=u.bgColor.bgBlackBright;for(let[d,g]of Object.entries(u)){for(let[f,v]of Object.entries(g))u[f]={open:`\x1B[${v[0]}m`,close:`\x1B[${v[1]}m`},g[f]=u[f],i.set(v[0],v[1]);Object.defineProperty(u,d,{value:g,enumerable:!1})}return Object.defineProperty(u,"codes",{value:i,enumerable:!1}),u.color.close="\x1B[39m",u.bgColor.close="\x1B[49m",u.color.ansi256=r(),u.color.ansi16m=a(),u.bgColor.ansi256=r(10),u.bgColor.ansi16m=a(10),Object.defineProperties(u,{rgbToAnsi256:{value:(d,g,f)=>d===g&&g===f?d<8?16:d>248?231:Math.round((d-8)/247*24)+232:16+36*Math.round(d/255*5)+6*Math.round(g/255*5)+Math.round(f/255*5),enumerable:!1},hexToRgb:{value:d=>{let g=new RegExp("(?[a-f\\d]{6}|[a-f\\d]{3})","i").exec(d.toString(16));if(!g)return[0,0,0];let{colorString:f}=g.groups;f.length===3&&(f=f.split("").map(b=>b+b).join(""));let v=Number.parseInt(f,16);return[v>>16&255,v>>8&255,v&255]},enumerable:!1},hexToAnsi256:{value:d=>u.rgbToAnsi256(...u.hexToRgb(d)),enumerable:!1}}),u}c(n,"fn"),Object.defineProperty(e,"exports",{enumerable:!0,get:n})}),Ze=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printIteratorEntries=r,t.printIteratorValues=a,t.printListItems=n,t.printObjectProperties=i;var e=c((u,d)=>{let g=Object.keys(u),f=d!==null?g.sort(d):g;return Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(u).forEach(v=>{Object.getOwnPropertyDescriptor(u,v).enumerable&&f.push(v)}),f},"mn");function r(u,d,g,f,v,b,h=": "){let l="",o=0,p=u.next();if(!p.done){l+=d.spacingOuter;let C=g+d.indent;for(;!p.done;){if(l+=C,o++===d.maxWidth){l+="\u2026";break}let s=b(p.value[0],d,C,f,v),y=b(p.value[1],d,C,f,v);l+=s+h+y,p=u.next(),p.done?d.min||(l+=","):l+=`,${d.spacingInner}`}l+=d.spacingOuter+g}return l}c(r,"bn");function a(u,d,g,f,v,b){let h="",l=0,o=u.next();if(!o.done){h+=d.spacingOuter;let p=g+d.indent;for(;!o.done;){if(h+=p,l++===d.maxWidth){h+="\u2026";break}h+=b(o.value,d,p,f,v),o=u.next(),o.done?d.min||(h+=","):h+=`,${d.spacingInner}`}h+=d.spacingOuter+g}return h}c(a,"dn");function n(u,d,g,f,v,b){let h="";if(u.length){h+=d.spacingOuter;let l=g+d.indent;for(let o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r=globalThis["jest-symbol-do-not-touch"]||globalThis.Symbol,a=typeof r=="function"&&r.for?r.for("jest.asymmetricMatcher"):1267621,n=" ",i=c((f,v,b,h,l,o)=>{let p=f.toString();if(p==="ArrayContaining"||p==="ArrayNotContaining")return++h>v.maxDepth?`[${p}]`:`${p+n}[${(0,e.printListItems)(f.sample,v,b,h,l,o)}]`;if(p==="ObjectContaining"||p==="ObjectNotContaining")return++h>v.maxDepth?`[${p}]`:`${p+n}{${(0,e.printObjectProperties)(f.sample,v,b,h,l,o)}}`;if(p==="StringMatching"||p==="StringNotMatching"||p==="StringContaining"||p==="StringNotContaining")return p+n+o(f.sample,v,b,h,l);if(typeof f.toAsymmetricMatcher!="function")throw new Error(`Asymmetric matcher ${f.constructor.name} does not implement toAsymmetricMatcher()`);return f.toAsymmetricMatcher()},"Oh");t.serialize=i;var u=c(f=>f&&f.$$typeof===a,"_h");t.test=u;var d={serialize:i,test:u},g=d;t.default=g}),Xa=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r=" ",a=["DOMStringMap","NamedNodeMap"],n=/^(HTML\w*Collection|NodeList)$/,i=c(b=>a.indexOf(b)!==-1||n.test(b),"En"),u=c(b=>b&&b.constructor&&!!b.constructor.name&&i(b.constructor.name),"Ch");t.test=u;var d=c(b=>b.constructor.name==="NamedNodeMap","Mn"),g=c((b,h,l,o,p,C)=>{let s=b.constructor.name;return++o>h.maxDepth?`[${s}]`:(h.min?"":s+r)+(a.indexOf(s)!==-1?`{${(0,e.printObjectProperties)(d(b)?Array.from(b).reduce((y,A)=>(y[A.name]=A.value,y),{}):Va({},b),h,l,o,p,C)}}`:`[${(0,e.printListItems)(Array.from(b),h,l,o,p,C)}]`)},"Ih");t.serialize=g;var f={serialize:g,test:u},v=f;t.default=v}),Ha=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e;function e(r){return r.replace(//g,">")}c(e,"On")}),It=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printText=t.printProps=t.printElementAsLeaf=t.printElement=t.printComment=t.printChildren=void 0;var e=r(Ha());function r(f){return f&&f.__esModule?f:{default:f}}c(r,"_n");var a=c((f,v,b,h,l,o,p)=>{let C=h+b.indent,s=b.colors;return f.map(y=>{let A=v[y],O=p(A,b,C,l,o);return typeof A!="string"&&(O.indexOf(` -`)!==-1&&(O=b.spacingOuter+C+O+b.spacingOuter+h),O=`{${O}}`),`${b.spacingInner+h+s.prop.open+y+s.prop.close}=${s.value.open}${O}${s.value.close}`}).join("")},"Nn");t.printProps=a;var n=c((f,v,b,h,l,o)=>f.map(p=>v.spacingOuter+b+(typeof p=="string"?i(p,v):o(p,v,b,h,l))).join(""),"kn");t.printChildren=n;var i=c((f,v)=>{let b=v.colors.content;return b.open+(0,e.default)(f)+b.close},"Ph");t.printText=i;var u=c((f,v)=>{let b=v.colors.comment;return`${b.open}${b.close}`},"$n");t.printComment=u;var d=c((f,v,b,h,l)=>{let o=h.colors.tag;return`${o.open}<${f}${v&&o.close+v+h.spacingOuter+l+o.open}${b?`>${o.close}${b}${h.spacingOuter}${l}${o.open}${o.close}`},"Cn");t.printElement=d;var g=c((f,v)=>{let b=v.colors.tag;return`${b.open}<${f}${b.close} \u2026${b.open} />${b.close}`},"In");t.printElementAsLeaf=g}),Qa=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=It(),r=1,a=3,n=8,i=11,u=/^((HTML|SVG)\w*)?Element$/,d=c(C=>{try{return typeof C.hasAttribute=="function"&&C.hasAttribute("is")}catch{return!1}},"Bn"),g=c(C=>{let s=C.constructor.name,{nodeType:y,tagName:A}=C,O=typeof A=="string"&&A.includes("-")||d(C);return y===r&&(u.test(s)||O)||y===a&&s==="Text"||y===n&&s==="Comment"||y===i&&s==="DocumentFragment"},"Pn"),f=c(C=>{var s;return((s=C?.constructor)==null?void 0:s.name)&&g(C)},"Uh");t.test=f;function v(C){return C.nodeType===a}c(v,"Fn");function b(C){return C.nodeType===n}c(b,"zn");function h(C){return C.nodeType===i}c(h,"Js");var l=c((C,s,y,A,O,P)=>{if(v(C))return(0,e.printText)(C.data,s);if(b(C))return(0,e.printComment)(C.data,s);let M=h(C)?"DocumentFragment":C.tagName.toLowerCase();return++A>s.maxDepth?(0,e.printElementAsLeaf)(M,s):(0,e.printElement)(M,(0,e.printProps)(h(C)?[]:Array.from(C.attributes).map(E=>E.name).sort(),h(C)?{}:Array.from(C.attributes).reduce((E,w)=>(E[w.name]=w.value,E),{}),s,y+s.indent,A,O,P),(0,e.printChildren)(Array.prototype.slice.call(C.childNodes||C.children),s,y+s.indent,A,O,P),s,y)},"jh");t.serialize=l;var o={serialize:l,test:f},p=o;t.default=p}),Ya=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r="@@__IMMUTABLE_ITERABLE__@@",a="@@__IMMUTABLE_LIST__@@",n="@@__IMMUTABLE_KEYED__@@",i="@@__IMMUTABLE_MAP__@@",u="@@__IMMUTABLE_ORDERED__@@",d="@@__IMMUTABLE_RECORD__@@",g="@@__IMMUTABLE_SEQ__@@",f="@@__IMMUTABLE_SET__@@",v="@@__IMMUTABLE_STACK__@@",b=c(w=>`Immutable.${w}`,"is"),h=c(w=>`[${w}]`,"xs"),l=" ",o="\u2026",p=c((w,x,I,_,B,j,U)=>++_>x.maxDepth?h(b(U)):`${b(U)+l}{${(0,e.printIteratorEntries)(w.entries(),x,I,_,B,j)}}`,"Hn");function C(w){let x=0;return{next(){if(x{let U=b(w._name||"Record");return++_>x.maxDepth?h(U):`${U+l}{${(0,e.printIteratorEntries)(C(w),x,I,_,B,j)}}`},"Yn"),y=c((w,x,I,_,B,j)=>{let U=b("Seq");return++_>x.maxDepth?h(U):w[n]?`${U+l}{${w._iter||w._object?(0,e.printIteratorEntries)(w.entries(),x,I,_,B,j):o}}`:`${U+l}[${w._iter||w._array||w._collection||w._iterable?(0,e.printIteratorValues)(w.values(),x,I,_,B,j):o}]`},"Jn"),A=c((w,x,I,_,B,j,U)=>++_>x.maxDepth?h(b(U)):`${b(U)+l}[${(0,e.printIteratorValues)(w.values(),x,I,_,B,j)}]`,"ts"),O=c((w,x,I,_,B,j)=>w[i]?p(w,x,I,_,B,j,w[u]?"OrderedMap":"Map"):w[a]?A(w,x,I,_,B,j,"List"):w[f]?A(w,x,I,_,B,j,w[u]?"OrderedSet":"Set"):w[v]?A(w,x,I,_,B,j,"Stack"):w[g]?y(w,x,I,_,B,j):s(w,x,I,_,B,j),"Wh");t.serialize=O;var P=c(w=>w&&(w[r]===!0||w[d]===!0),"Zh");t.test=P;var M={serialize:O,test:P},E=M;t.default=E}),en=Z(t=>{"use strict";var e=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),d=Symbol.for("react.context"),g=Symbol.for("react.server_context"),f=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),b=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),l=Symbol.for("react.lazy"),o=Symbol.for("react.offscreen"),p;p=Symbol.for("react.module.reference");function C(s){if(typeof s=="object"&&s!==null){var y=s.$$typeof;switch(y){case e:switch(s=s.type,s){case a:case i:case n:case v:case b:return s;default:switch(s=s&&s.$$typeof,s){case g:case d:case f:case l:case h:case u:return s;default:return y}}case r:return y}}}c(C,"I"),t.ContextConsumer=d,t.ContextProvider=u,t.Element=e,t.ForwardRef=f,t.Fragment=a,t.Lazy=l,t.Memo=h,t.Portal=r,t.Profiler=i,t.StrictMode=n,t.Suspense=v,t.SuspenseList=b,t.isAsyncMode=function(){return!1},t.isConcurrentMode=function(){return!1},t.isContextConsumer=function(s){return C(s)===d},t.isContextProvider=function(s){return C(s)===u},t.isElement=function(s){return typeof s=="object"&&s!==null&&s.$$typeof===e},t.isForwardRef=function(s){return C(s)===f},t.isFragment=function(s){return C(s)===a},t.isLazy=function(s){return C(s)===l},t.isMemo=function(s){return C(s)===h},t.isPortal=function(s){return C(s)===r},t.isProfiler=function(s){return C(s)===i},t.isStrictMode=function(s){return C(s)===n},t.isSuspense=function(s){return C(s)===v},t.isSuspenseList=function(s){return C(s)===b},t.isValidElementType=function(s){return typeof s=="string"||typeof s=="function"||s===a||s===i||s===n||s===v||s===b||s===o||typeof s=="object"&&s!==null&&(s.$$typeof===l||s.$$typeof===h||s.$$typeof===u||s.$$typeof===d||s.$$typeof===f||s.$$typeof===p||s.getModuleId!==void 0)},t.typeOf=C}),tn=Z((t,e)=>{"use strict";e.exports=en()}),rn=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=n(tn()),r=It();function a(h){if(typeof WeakMap!="function")return null;var l=new WeakMap,o=new WeakMap;return(a=c(function(p){return p?o:l},"th"))(h)}c(a,"th");function n(h,l){if(!l&&h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var o=a(l);if(o&&o.has(h))return o.get(h);var p={},C=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in h)if(s!=="default"&&Object.prototype.hasOwnProperty.call(h,s)){var y=C?Object.getOwnPropertyDescriptor(h,s):null;y&&(y.get||y.set)?Object.defineProperty(p,s,y):p[s]=h[s]}return p.default=h,o&&o.set(h,p),p}c(n,"ci");var i=c((h,l=[])=>(Array.isArray(h)?h.forEach(o=>{i(o,l)}):h!=null&&h!==!1&&l.push(h),l),"gh"),u=c(h=>{let l=h.type;if(typeof l=="string")return l;if(typeof l=="function")return l.displayName||l.name||"Unknown";if(e.isFragment(h))return"React.Fragment";if(e.isSuspense(h))return"React.Suspense";if(typeof l=="object"&&l!==null){if(e.isContextProvider(h))return"Context.Provider";if(e.isContextConsumer(h))return"Context.Consumer";if(e.isForwardRef(h)){if(l.displayName)return l.displayName;let o=l.render.displayName||l.render.name||"";return o!==""?`ForwardRef(${o})`:"ForwardRef"}if(e.isMemo(h)){let o=l.displayName||l.type.displayName||l.type.name||"";return o!==""?`Memo(${o})`:"Memo"}}return"UNDEFINED"},"Jh"),d=c(h=>{let{props:l}=h;return Object.keys(l).filter(o=>o!=="children"&&l[o]!==void 0).sort()},"ni"),g=c((h,l,o,p,C,s)=>++p>l.maxDepth?(0,r.printElementAsLeaf)(u(h),l):(0,r.printElement)(u(h),(0,r.printProps)(d(h),h.props,l,o+l.indent,p,C,s),(0,r.printChildren)(i(h.props.children),l,o+l.indent,p,C,s),l,o),"sc");t.serialize=g;var f=c(h=>h!=null&&e.isElement(h),"hc");t.test=f;var v={serialize:g,test:f},b=v;t.default=b}),an=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=It(),r=globalThis["jest-symbol-do-not-touch"]||globalThis.Symbol,a=typeof r=="function"&&r.for?r.for("react.test.json"):245830487,n=c(f=>{let{props:v}=f;return v?Object.keys(v).filter(b=>v[b]!==void 0).sort():[]},"oi"),i=c((f,v,b,h,l,o)=>++h>v.maxDepth?(0,e.printElementAsLeaf)(f.type,v):(0,e.printElement)(f.type,f.props?(0,e.printProps)(n(f),f.props,v,b+v.indent,h,l,o):"",f.children?(0,e.printChildren)(f.children,v,b+v.indent,h,l,o):"",v,b),"nc");t.serialize=i;var u=c(f=>f&&f.$$typeof===a,"ic");t.test=u;var d={serialize:i,test:u},g=d;t.default=g}),nn=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.DEFAULT_OPTIONS=void 0,t.format=Kt,t.plugins=void 0;var e=f(Ja()),r=Ze(),a=f(Ka()),n=f(Xa()),i=f(Qa()),u=f(Ya()),d=f(rn()),g=f(an());function f(m){return m&&m.__esModule?m:{default:m}}c(f,"t");var v=Object.prototype.toString,b=Date.prototype.toISOString,h=Error.prototype.toString,l=RegExp.prototype.toString,o=c(m=>typeof m.constructor=="function"&&m.constructor.name||"Object","ch"),p=c(m=>typeof window<"u"&&m===window,"vi"),C=/^Symbol\((.*)\)(.*)$/,s=/\n/gi,y=class extends Error{static{c(this,"Is")}constructor(m,S){super(m),this.stack=S,this.name=this.constructor.name}};function A(m){return m==="[object Array]"||m==="[object ArrayBuffer]"||m==="[object DataView]"||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]"}c(A,"Mi");function O(m){return Object.is(m,-0)?"-0":String(m)}c(O,"Ai");function P(m){return`${m}n`}c(P,"Ti");function M(m,S){return S?`[Function ${m.name||"anonymous"}]`:"[Function]"}c(M,"oc");function E(m){return String(m).replace(C,"Symbol($1)")}c(E,"uc");function w(m){return`[${h.call(m)}]`}c(w,"lc");function x(m,S,N,T){if(m===!0||m===!1)return`${m}`;if(m===void 0)return"undefined";if(m===null)return"null";let $=typeof m;if($==="number")return O(m);if($==="bigint")return P(m);if($==="string")return T?`"${m.replace(/"|\\/g,"\\$&")}"`:`"${m}"`;if($==="function")return M(m,S);if($==="symbol")return E(m);let q=v.call(m);return q==="[object WeakMap]"?"WeakMap {}":q==="[object WeakSet]"?"WeakSet {}":q==="[object Function]"||q==="[object GeneratorFunction]"?M(m,S):q==="[object Symbol]"?E(m):q==="[object Date]"?isNaN(+m)?"Date { NaN }":b.call(m):q==="[object Error]"?w(m):q==="[object RegExp]"?N?l.call(m).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&"):l.call(m):m instanceof Error?w(m):null}c(x,"bc");function I(m,S,N,T,$,q){if($.indexOf(m)!==-1)return"[Circular]";$=$.slice(),$.push(m);let z=++T>S.maxDepth,V=S.min;if(S.callToJSON&&!z&&m.toJSON&&typeof m.toJSON=="function"&&!q)return U(m.toJSON(),S,N,T,$,!0);let me=v.call(m);return me==="[object Arguments]"?z?"[Arguments]":`${V?"":"Arguments "}[${(0,r.printListItems)(m,S,N,T,$,U)}]`:A(me)?z?`[${m.constructor.name}]`:`${V||!S.printBasicPrototype&&m.constructor.name==="Array"?"":`${m.constructor.name} `}[${(0,r.printListItems)(m,S,N,T,$,U)}]`:me==="[object Map]"?z?"[Map]":`Map {${(0,r.printIteratorEntries)(m.entries(),S,N,T,$,U," => ")}}`:me==="[object Set]"?z?"[Set]":`Set {${(0,r.printIteratorValues)(m.values(),S,N,T,$,U)}}`:z||p(m)?`[${o(m)}]`:`${V||!S.printBasicPrototype&&o(m)==="Object"?"":`${o(m)} `}{${(0,r.printObjectProperties)(m,S,N,T,$,U)}}`}c(I,"dc");function _(m){return m.serialize!=null}c(_,"Oi");function B(m,S,N,T,$,q){let z;try{z=_(m)?m.serialize(S,N,T,$,q,U):m.print(S,V=>U(V,N,T,$,q),V=>{let me=T+N.indent;return me+V.replace(s,` -${me}`)},{edgeSpacing:N.spacingOuter,min:N.min,spacing:N.spacingInner},N.colors)}catch(V){throw new y(V.message,V.stack)}if(typeof z!="string")throw new Error(`pretty-format: Plugin must return type "string" but instead returned "${typeof z}".`);return z}c(B,"wc");function j(m,S){for(let N=0;Nm,"_i"),X=Oa({callToJSON:!0,compareKeys:void 0,escapeRegex:!1,escapeString:!0,highlight:!1,indent:2,maxDepth:1/0,maxWidth:1/0,min:!1,plugins:[],printBasicPrototype:!0,printFunctionName:!0,theme:ft});t.DEFAULT_OPTIONS=X;function Aa(m){if(Object.keys(m).forEach(S=>{if(!Object.prototype.hasOwnProperty.call(X,S))throw new Error(`pretty-format: Unknown option "${S}".`)}),m.min&&m.indent!==void 0&&m.indent!==0)throw new Error('pretty-format: Options "min" and "indent" cannot be used together.');if(m.theme!==void 0){if(m.theme===null)throw new Error('pretty-format: Option "theme" must not be null.');if(typeof m.theme!="object")throw new Error(`pretty-format: Option "theme" must be of type "object" but instead received "${typeof m.theme}".`)}}c(Aa,"Ni");var Na=c(m=>Wt.reduce((S,N)=>{let T=m.theme&&m.theme[N]!==void 0?m.theme[N]:ft[N],$=T&&e.default[T];if($&&typeof $.close=="string"&&typeof $.open=="string")S[N]=$;else throw new Error(`pretty-format: Option "theme" has a key "${N}" whose value "${T}" is undefined in ansi-styles.`);return S},Object.create(null)),"ki"),_a=c(()=>Wt.reduce((m,S)=>(m[S]={close:"",open:""},m),Object.create(null)),"$i"),Vt=c(m=>{var S;return(S=m?.printFunctionName)!=null?S:X.printFunctionName},"ac"),Gt=c(m=>{var S;return(S=m?.escapeRegex)!=null?S:X.escapeRegex},"xc"),Zt=c(m=>{var S;return(S=m?.escapeString)!=null?S:X.escapeString},"vc"),Jt=c(m=>{var S,N,T,$,q,z,V;return{callToJSON:(S=m?.callToJSON)!=null?S:X.callToJSON,colors:m!=null&&m.highlight?Na(m):_a(),compareKeys:typeof m?.compareKeys=="function"||m?.compareKeys===null?m.compareKeys:X.compareKeys,escapeRegex:Gt(m),escapeString:Zt(m),indent:m!=null&&m.min?"":Ia((N=m?.indent)!=null?N:X.indent),maxDepth:(T=m?.maxDepth)!=null?T:X.maxDepth,maxWidth:($=m?.maxWidth)!=null?$:X.maxWidth,min:(q=m?.min)!=null?q:X.min,plugins:(z=m?.plugins)!=null?z:X.plugins,printBasicPrototype:(V=m?.printBasicPrototype)!=null?V:!0,printFunctionName:Vt(m),spacingInner:m!=null&&m.min?" ":` +`}),"getConfig");function pu(t){return new Array(t+1).join(" ")}c(pu,"createIndent");function va(t,e){if(e&&(ou(e),e.plugins)){let a=sa(e.plugins,t);if(a!==null)return Ca(a,t,ha(e),"",0,[])}let r=la(t,ma(e),ba(e),ga(e));return r!==null?r:fa(t,ha(e),"",0,[])}c(va,"format");var lu={AsymmetricMatcher:Vi.default,DOMCollection:Gi.default,DOMElement:Zi.default,Immutable:Ji.default,ReactElement:Ki.default,ReactTestComponent:Xi.default};ie.plugins=lu;var fu=va;ie.default=fu});var Fa=c(function(t){return function(e){for(var r=Math.max(0,Math.floor(e)),a=[t(0)],n=1;ne in t?_t(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,"fh"),Va=c((t,e)=>{for(var r in e||(e={}))ar.call(e,r)&&Qt(t,r,e[r]);if(Ht)for(var r of Ht(e))Wa.call(e,r)&&Qt(t,r,e[r]);return t},"bh"),Z=c((t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),"k"),Ga=c((t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of La(e))!ar.call(t,n)&&n!==r&&_t(t,n,{get:()=>e[n],enumerable:!(a=qa(e,n))||a.enumerable});return t},"pn"),nr=c((t,e,r)=>(r=t!=null?Ua(za(t)):{},Ga(e||!t||!t.__esModule?_t(r,"default",{value:t,enumerable:!0}):r,t)),"dh"),Za=Z((t,e)=>{(function(r){"use strict";var a=2e3,n={s:1,n:0,d:1};function i(o,p){if(isNaN(o=parseInt(o,10)))throw l.InvalidParameter;return o*p}c(i,"n");function u(o,p){if(p===0)throw l.DivisionByZero;var C=Object.create(l.prototype);C.s=o<0?-1:1,o=o<0?-o:o;var s=h(o,p);return C.n=o/s,C.d=p/s,C}c(u,"i");function d(o){for(var p={},C=o,s=2,y=4;y<=C;){for(;C%s===0;)C/=s,p[s]=(p[s]||0)+1;y+=1+2*s++}return C!==o?C>1&&(p[C]=(p[C]||0)+1):p[o]=(p[o]||0)+1,p}c(d,"p");var g=c(function(o,p){var C=0,s=1,y=1,A=0,O=0,P=0,M=1,E=1,w=0,x=1,I=1,_=1,B=1e7,j;if(o!=null)if(p!==void 0){if(C=o,s=p,y=C*s,C%1!==0||s%1!==0)throw l.NonIntegerParameter}else switch(typeof o){case"object":{if("d"in o&&"n"in o)C=o.n,s=o.d,"s"in o&&(C*=o.s);else if(0 in o)C=o[0],1 in o&&(s=o[1]);else throw l.InvalidParameter;y=C*s;break}case"number":{if(o<0&&(y=o,o=-o),o%1===0)C=o;else if(o>0){for(o>=1&&(E=Math.pow(10,Math.floor(1+Math.log(o)/Math.LN10)),o/=E);x<=B&&_<=B;)if(j=(w+I)/(x+_),o===j){x+_<=B?(C=w+I,s=x+_):_>x?(C=I,s=_):(C=w,s=x);break}else o>j?(w+=I,x+=_):(I+=w,_+=x),x>B?(C=I,s=_):(C=w,s=x);C*=E}else(isNaN(o)||isNaN(p))&&(s=C=NaN);break}case"string":{if(x=o.match(/\d+|./g),x===null)throw l.InvalidParameter;if(x[w]==="-"?(y=-1,w++):x[w]==="+"&&w++,x.length===w+1?O=i(x[w++],y):x[w+1]==="."||x[w]==="."?(x[w]!=="."&&(A=i(x[w++],y)),w++,(w+1===x.length||x[w+1]==="("&&x[w+3]===")"||x[w+1]==="'"&&x[w+3]==="'")&&(O=i(x[w],y),M=Math.pow(10,x[w].length),w++),(x[w]==="("&&x[w+2]===")"||x[w]==="'"&&x[w+2]==="'")&&(P=i(x[w+1],y),E=Math.pow(10,x[w+1].length)-1,w+=3)):x[w+1]==="/"||x[w+1]===":"?(O=i(x[w],y),M=i(x[w+2],1),w+=3):x[w+3]==="/"&&x[w+1]===" "&&(A=i(x[w],y),O=i(x[w+2],y),M=i(x[w+4],1),w+=5),x.length<=w){s=M*E,y=C=P+s*A+E*O;break}}default:throw l.InvalidParameter}if(s===0)throw l.DivisionByZero;n.s=y<0?-1:1,n.n=Math.abs(C),n.d=Math.abs(s)},"e");function f(o,p,C){for(var s=1;p>0;o=o*o%C,p>>=1)p&1&&(s=s*o%C);return s}c(f,"l");function v(o,p){for(;p%2===0;p/=2);for(;p%5===0;p/=5);if(p===1)return 0;for(var C=10%p,s=1;C!==1;s++)if(C=C*10%p,s>a)return 0;return s}c(v,"d");function b(o,p,C){for(var s=1,y=f(10,C,p),A=0;A<300;A++){if(s===y)return A;s=s*10%p,y=y*10%p}return 0}c(b,"b");function h(o,p){if(!o)return p;if(!p)return o;for(;;){if(o%=p,!o)return p;if(p%=o,!p)return o}}c(h,"x");function l(o,p){if(g(o,p),this instanceof l)o=h(n.d,n.n),this.s=n.s,this.n=n.n/o,this.d=n.d/o;else return u(n.s*n.n,n.d)}c(l,"w"),l.DivisionByZero=new Error("Division by Zero"),l.InvalidParameter=new Error("Invalid argument"),l.NonIntegerParameter=new Error("Parameters must be integer"),l.prototype={s:1,n:0,d:1,abs:function(){return u(this.n,this.d)},neg:function(){return u(-this.s*this.n,this.d)},add:function(o,p){return g(o,p),u(this.s*this.n*n.d+n.s*this.d*n.n,this.d*n.d)},sub:function(o,p){return g(o,p),u(this.s*this.n*n.d-n.s*this.d*n.n,this.d*n.d)},mul:function(o,p){return g(o,p),u(this.s*n.s*this.n*n.n,this.d*n.d)},div:function(o,p){return g(o,p),u(this.s*n.s*this.n*n.d,this.d*n.n)},clone:function(){return u(this.s*this.n,this.d)},mod:function(o,p){if(isNaN(this.n)||isNaN(this.d))return new l(NaN);if(o===void 0)return u(this.s*this.n%this.d,1);if(g(o,p),n.n===0&&this.d===0)throw l.DivisionByZero;return u(this.s*(n.d*this.n)%(n.n*this.d),n.d*this.d)},gcd:function(o,p){return g(o,p),u(h(n.n,this.n)*h(n.d,this.d),n.d*this.d)},lcm:function(o,p){return g(o,p),n.n===0&&this.n===0?u(0,1):u(n.n*this.n,h(n.n,this.n)*h(n.d,this.d))},ceil:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.ceil(o*this.s*this.n/this.d),o)},floor:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.floor(o*this.s*this.n/this.d),o)},round:function(o){return o=Math.pow(10,o||0),isNaN(this.n)||isNaN(this.d)?new l(NaN):u(Math.round(o*this.s*this.n/this.d),o)},inverse:function(){return u(this.s*this.d,this.n)},pow:function(o,p){if(g(o,p),n.d===1)return n.s<0?u(Math.pow(this.s*this.d,n.n),Math.pow(this.n,n.n)):u(Math.pow(this.s*this.n,n.n),Math.pow(this.d,n.n));if(this.s<0)return null;var C=d(this.n),s=d(this.d),y=1,A=1;for(var O in C)if(O!=="1"){if(O==="0"){y=0;break}if(C[O]*=n.n,C[O]%n.d===0)C[O]/=n.d;else return null;y*=Math.pow(O,C[O])}for(var O in s)if(O!=="1"){if(s[O]*=n.n,s[O]%n.d===0)s[O]/=n.d;else return null;A*=Math.pow(O,s[O])}return n.s<0?u(A,y):u(y,A)},equals:function(o,p){return g(o,p),this.s*this.n*n.d===n.s*n.n*this.d},compare:function(o,p){g(o,p);var C=this.s*this.n*n.d-n.s*n.n*this.d;return(0=0;A--)y=y.inverse().add(C[A]);if(y.sub(p).abs().valueOf()0&&(C+=p,C+=" ",s%=y),C+=s,C+="/",C+=y),C},toLatex:function(o){var p,C="",s=this.n,y=this.d;return this.s<0&&(C+="-"),y===1?C+=s:(o&&(p=Math.floor(s/y))>0&&(C+=p,s%=y),C+="\\frac{",C+=s,C+="}{",C+=y,C+="}"),C},toContinued:function(){var o,p=this.n,C=this.d,s=[];if(isNaN(p)||isNaN(C))return s;do s.push(Math.floor(p/C)),o=p%C,p=C,C=o;while(p!==1);return s},toString:function(o){var p=this.n,C=this.d;if(isNaN(p)||isNaN(C))return"NaN";o=o||15;var s=v(p,C),y=b(p,C,s),A=this.s<0?"-":"";if(A+=p/C|0,p%=C,p*=10,p&&(A+="."),s){for(var O=y;O--;)A+=p/C|0,p%=C,p*=10;A+="(";for(var O=s;O--;)A+=p/C|0,p%=C,p*=10;A+=")"}else for(var O=o;p&&O--;)A+=p/C|0,p%=C,p*=10;return A}},typeof define=="function"&&define.amd?define([],function(){return l}):typeof t=="object"?(Object.defineProperty(l,"__esModule",{value:!0}),l.default=l,l.Fraction=l,e.exports=l):r.Fraction=l})(t)}),Ja=Z((t,e)=>{"use strict";var r=c((i=0)=>u=>`\x1B[${38+i};5;${u}m`,"Sh"),a=c((i=0)=>(u,d,g)=>`\x1B[${38+i};2;${u};${d};${g}m`,"Eh");function n(){let i=new Map,u={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};u.color.gray=u.color.blackBright,u.bgColor.bgGray=u.bgColor.bgBlackBright,u.color.grey=u.color.blackBright,u.bgColor.bgGrey=u.bgColor.bgBlackBright;for(let[d,g]of Object.entries(u)){for(let[f,v]of Object.entries(g))u[f]={open:`\x1B[${v[0]}m`,close:`\x1B[${v[1]}m`},g[f]=u[f],i.set(v[0],v[1]);Object.defineProperty(u,d,{value:g,enumerable:!1})}return Object.defineProperty(u,"codes",{value:i,enumerable:!1}),u.color.close="\x1B[39m",u.bgColor.close="\x1B[49m",u.color.ansi256=r(),u.color.ansi16m=a(),u.bgColor.ansi256=r(10),u.bgColor.ansi16m=a(10),Object.defineProperties(u,{rgbToAnsi256:{value:(d,g,f)=>d===g&&g===f?d<8?16:d>248?231:Math.round((d-8)/247*24)+232:16+36*Math.round(d/255*5)+6*Math.round(g/255*5)+Math.round(f/255*5),enumerable:!1},hexToRgb:{value:d=>{let g=new RegExp("(?[a-f\\d]{6}|[a-f\\d]{3})","i").exec(d.toString(16));if(!g)return[0,0,0];let{colorString:f}=g.groups;f.length===3&&(f=f.split("").map(b=>b+b).join(""));let v=Number.parseInt(f,16);return[v>>16&255,v>>8&255,v&255]},enumerable:!1},hexToAnsi256:{value:d=>u.rgbToAnsi256(...u.hexToRgb(d)),enumerable:!1}}),u}c(n,"fn"),Object.defineProperty(e,"exports",{enumerable:!0,get:n})}),Ze=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printIteratorEntries=r,t.printIteratorValues=a,t.printListItems=n,t.printObjectProperties=i;var e=c((u,d)=>{let g=Object.keys(u),f=d!==null?g.sort(d):g;return Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(u).forEach(v=>{Object.getOwnPropertyDescriptor(u,v).enumerable&&f.push(v)}),f},"mn");function r(u,d,g,f,v,b,h=": "){let l="",o=0,p=u.next();if(!p.done){l+=d.spacingOuter;let C=g+d.indent;for(;!p.done;){if(l+=C,o++===d.maxWidth){l+="\u2026";break}let s=b(p.value[0],d,C,f,v),y=b(p.value[1],d,C,f,v);l+=s+h+y,p=u.next(),p.done?d.min||(l+=","):l+=`,${d.spacingInner}`}l+=d.spacingOuter+g}return l}c(r,"bn");function a(u,d,g,f,v,b){let h="",l=0,o=u.next();if(!o.done){h+=d.spacingOuter;let p=g+d.indent;for(;!o.done;){if(h+=p,l++===d.maxWidth){h+="\u2026";break}h+=b(o.value,d,p,f,v),o=u.next(),o.done?d.min||(h+=","):h+=`,${d.spacingInner}`}h+=d.spacingOuter+g}return h}c(a,"dn");function n(u,d,g,f,v,b){let h="";if(u.length){h+=d.spacingOuter;let l=g+d.indent;for(let o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r=globalThis["jest-symbol-do-not-touch"]||globalThis.Symbol,a=typeof r=="function"&&r.for?r.for("jest.asymmetricMatcher"):1267621,n=" ",i=c((f,v,b,h,l,o)=>{let p=f.toString();if(p==="ArrayContaining"||p==="ArrayNotContaining")return++h>v.maxDepth?`[${p}]`:`${p+n}[${(0,e.printListItems)(f.sample,v,b,h,l,o)}]`;if(p==="ObjectContaining"||p==="ObjectNotContaining")return++h>v.maxDepth?`[${p}]`:`${p+n}{${(0,e.printObjectProperties)(f.sample,v,b,h,l,o)}}`;if(p==="StringMatching"||p==="StringNotMatching"||p==="StringContaining"||p==="StringNotContaining")return p+n+o(f.sample,v,b,h,l);if(typeof f.toAsymmetricMatcher!="function")throw new Error(`Asymmetric matcher ${f.constructor.name} does not implement toAsymmetricMatcher()`);return f.toAsymmetricMatcher()},"Oh");t.serialize=i;var u=c(f=>f&&f.$$typeof===a,"_h");t.test=u;var d={serialize:i,test:u},g=d;t.default=g}),Xa=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r=" ",a=["DOMStringMap","NamedNodeMap"],n=/^(HTML\w*Collection|NodeList)$/,i=c(b=>a.indexOf(b)!==-1||n.test(b),"En"),u=c(b=>b&&b.constructor&&!!b.constructor.name&&i(b.constructor.name),"Ch");t.test=u;var d=c(b=>b.constructor.name==="NamedNodeMap","Mn"),g=c((b,h,l,o,p,C)=>{let s=b.constructor.name;return++o>h.maxDepth?`[${s}]`:(h.min?"":s+r)+(a.indexOf(s)!==-1?`{${(0,e.printObjectProperties)(d(b)?Array.from(b).reduce((y,A)=>(y[A.name]=A.value,y),{}):Va({},b),h,l,o,p,C)}}`:`[${(0,e.printListItems)(Array.from(b),h,l,o,p,C)}]`)},"Ih");t.serialize=g;var f={serialize:g,test:u},v=f;t.default=v}),Ha=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e;function e(r){return r.replace(//g,">")}c(e,"On")}),It=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.printText=t.printProps=t.printElementAsLeaf=t.printElement=t.printComment=t.printChildren=void 0;var e=r(Ha());function r(f){return f&&f.__esModule?f:{default:f}}c(r,"_n");var a=c((f,v,b,h,l,o,p)=>{let C=h+b.indent,s=b.colors;return f.map(y=>{let A=v[y],O=p(A,b,C,l,o);return typeof A!="string"&&(O.indexOf(` +`)!==-1&&(O=b.spacingOuter+C+O+b.spacingOuter+h),O=`{${O}}`),`${b.spacingInner+h+s.prop.open+y+s.prop.close}=${s.value.open}${O}${s.value.close}`}).join("")},"Nn");t.printProps=a;var n=c((f,v,b,h,l,o)=>f.map(p=>v.spacingOuter+b+(typeof p=="string"?i(p,v):o(p,v,b,h,l))).join(""),"kn");t.printChildren=n;var i=c((f,v)=>{let b=v.colors.content;return b.open+(0,e.default)(f)+b.close},"Ph");t.printText=i;var u=c((f,v)=>{let b=v.colors.comment;return`${b.open}${b.close}`},"$n");t.printComment=u;var d=c((f,v,b,h,l)=>{let o=h.colors.tag;return`${o.open}<${f}${v&&o.close+v+h.spacingOuter+l+o.open}${b?`>${o.close}${b}${h.spacingOuter}${l}${o.open}${o.close}`},"Cn");t.printElement=d;var g=c((f,v)=>{let b=v.colors.tag;return`${b.open}<${f}${b.close} \u2026${b.open} />${b.close}`},"In");t.printElementAsLeaf=g}),Qa=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=It(),r=1,a=3,n=8,i=11,u=/^((HTML|SVG)\w*)?Element$/,d=c(C=>{try{return typeof C.hasAttribute=="function"&&C.hasAttribute("is")}catch{return!1}},"Bn"),g=c(C=>{let s=C.constructor.name,{nodeType:y,tagName:A}=C,O=typeof A=="string"&&A.includes("-")||d(C);return y===r&&(u.test(s)||O)||y===a&&s==="Text"||y===n&&s==="Comment"||y===i&&s==="DocumentFragment"},"Pn"),f=c(C=>{var s;return((s=C?.constructor)==null?void 0:s.name)&&g(C)},"Uh");t.test=f;function v(C){return C.nodeType===a}c(v,"Fn");function b(C){return C.nodeType===n}c(b,"zn");function h(C){return C.nodeType===i}c(h,"Js");var l=c((C,s,y,A,O,P)=>{if(v(C))return(0,e.printText)(C.data,s);if(b(C))return(0,e.printComment)(C.data,s);let M=h(C)?"DocumentFragment":C.tagName.toLowerCase();return++A>s.maxDepth?(0,e.printElementAsLeaf)(M,s):(0,e.printElement)(M,(0,e.printProps)(h(C)?[]:Array.from(C.attributes).map(E=>E.name).sort(),h(C)?{}:Array.from(C.attributes).reduce((E,w)=>(E[w.name]=w.value,E),{}),s,y+s.indent,A,O,P),(0,e.printChildren)(Array.prototype.slice.call(C.childNodes||C.children),s,y+s.indent,A,O,P),s,y)},"jh");t.serialize=l;var o={serialize:l,test:f},p=o;t.default=p}),Ya=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=Ze(),r="@@__IMMUTABLE_ITERABLE__@@",a="@@__IMMUTABLE_LIST__@@",n="@@__IMMUTABLE_KEYED__@@",i="@@__IMMUTABLE_MAP__@@",u="@@__IMMUTABLE_ORDERED__@@",d="@@__IMMUTABLE_RECORD__@@",g="@@__IMMUTABLE_SEQ__@@",f="@@__IMMUTABLE_SET__@@",v="@@__IMMUTABLE_STACK__@@",b=c(w=>`Immutable.${w}`,"is"),h=c(w=>`[${w}]`,"xs"),l=" ",o="\u2026",p=c((w,x,I,_,B,j,U)=>++_>x.maxDepth?h(b(U)):`${b(U)+l}{${(0,e.printIteratorEntries)(w.entries(),x,I,_,B,j)}}`,"Hn");function C(w){let x=0;return{next(){if(x{let U=b(w._name||"Record");return++_>x.maxDepth?h(U):`${U+l}{${(0,e.printIteratorEntries)(C(w),x,I,_,B,j)}}`},"Yn"),y=c((w,x,I,_,B,j)=>{let U=b("Seq");return++_>x.maxDepth?h(U):w[n]?`${U+l}{${w._iter||w._object?(0,e.printIteratorEntries)(w.entries(),x,I,_,B,j):o}}`:`${U+l}[${w._iter||w._array||w._collection||w._iterable?(0,e.printIteratorValues)(w.values(),x,I,_,B,j):o}]`},"Jn"),A=c((w,x,I,_,B,j,U)=>++_>x.maxDepth?h(b(U)):`${b(U)+l}[${(0,e.printIteratorValues)(w.values(),x,I,_,B,j)}]`,"ts"),O=c((w,x,I,_,B,j)=>w[i]?p(w,x,I,_,B,j,w[u]?"OrderedMap":"Map"):w[a]?A(w,x,I,_,B,j,"List"):w[f]?A(w,x,I,_,B,j,w[u]?"OrderedSet":"Set"):w[v]?A(w,x,I,_,B,j,"Stack"):w[g]?y(w,x,I,_,B,j):s(w,x,I,_,B,j),"Wh");t.serialize=O;var P=c(w=>w&&(w[r]===!0||w[d]===!0),"Zh");t.test=P;var M={serialize:O,test:P},E=M;t.default=E}),en=Z(t=>{"use strict";var e=Symbol.for("react.element"),r=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),u=Symbol.for("react.provider"),d=Symbol.for("react.context"),g=Symbol.for("react.server_context"),f=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),b=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),l=Symbol.for("react.lazy"),o=Symbol.for("react.offscreen"),p;p=Symbol.for("react.module.reference");function C(s){if(typeof s=="object"&&s!==null){var y=s.$$typeof;switch(y){case e:switch(s=s.type,s){case a:case i:case n:case v:case b:return s;default:switch(s=s&&s.$$typeof,s){case g:case d:case f:case l:case h:case u:return s;default:return y}}case r:return y}}}c(C,"I"),t.ContextConsumer=d,t.ContextProvider=u,t.Element=e,t.ForwardRef=f,t.Fragment=a,t.Lazy=l,t.Memo=h,t.Portal=r,t.Profiler=i,t.StrictMode=n,t.Suspense=v,t.SuspenseList=b,t.isAsyncMode=function(){return!1},t.isConcurrentMode=function(){return!1},t.isContextConsumer=function(s){return C(s)===d},t.isContextProvider=function(s){return C(s)===u},t.isElement=function(s){return typeof s=="object"&&s!==null&&s.$$typeof===e},t.isForwardRef=function(s){return C(s)===f},t.isFragment=function(s){return C(s)===a},t.isLazy=function(s){return C(s)===l},t.isMemo=function(s){return C(s)===h},t.isPortal=function(s){return C(s)===r},t.isProfiler=function(s){return C(s)===i},t.isStrictMode=function(s){return C(s)===n},t.isSuspense=function(s){return C(s)===v},t.isSuspenseList=function(s){return C(s)===b},t.isValidElementType=function(s){return typeof s=="string"||typeof s=="function"||s===a||s===i||s===n||s===v||s===b||s===o||typeof s=="object"&&s!==null&&(s.$$typeof===l||s.$$typeof===h||s.$$typeof===u||s.$$typeof===d||s.$$typeof===f||s.$$typeof===p||s.getModuleId!==void 0)},t.typeOf=C}),tn=Z((t,e)=>{"use strict";e.exports=en()}),rn=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=n(tn()),r=It();function a(h){if(typeof WeakMap!="function")return null;var l=new WeakMap,o=new WeakMap;return(a=c(function(p){return p?o:l},"th"))(h)}c(a,"th");function n(h,l){if(!l&&h&&h.__esModule)return h;if(h===null||typeof h!="object"&&typeof h!="function")return{default:h};var o=a(l);if(o&&o.has(h))return o.get(h);var p={},C=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in h)if(s!=="default"&&Object.prototype.hasOwnProperty.call(h,s)){var y=C?Object.getOwnPropertyDescriptor(h,s):null;y&&(y.get||y.set)?Object.defineProperty(p,s,y):p[s]=h[s]}return p.default=h,o&&o.set(h,p),p}c(n,"ci");var i=c((h,l=[])=>(Array.isArray(h)?h.forEach(o=>{i(o,l)}):h!=null&&h!==!1&&l.push(h),l),"gh"),u=c(h=>{let l=h.type;if(typeof l=="string")return l;if(typeof l=="function")return l.displayName||l.name||"Unknown";if(e.isFragment(h))return"React.Fragment";if(e.isSuspense(h))return"React.Suspense";if(typeof l=="object"&&l!==null){if(e.isContextProvider(h))return"Context.Provider";if(e.isContextConsumer(h))return"Context.Consumer";if(e.isForwardRef(h)){if(l.displayName)return l.displayName;let o=l.render.displayName||l.render.name||"";return o!==""?`ForwardRef(${o})`:"ForwardRef"}if(e.isMemo(h)){let o=l.displayName||l.type.displayName||l.type.name||"";return o!==""?`Memo(${o})`:"Memo"}}return"UNDEFINED"},"Jh"),d=c(h=>{let{props:l}=h;return Object.keys(l).filter(o=>o!=="children"&&l[o]!==void 0).sort()},"ni"),g=c((h,l,o,p,C,s)=>++p>l.maxDepth?(0,r.printElementAsLeaf)(u(h),l):(0,r.printElement)(u(h),(0,r.printProps)(d(h),h.props,l,o+l.indent,p,C,s),(0,r.printChildren)(i(h.props.children),l,o+l.indent,p,C,s),l,o),"sc");t.serialize=g;var f=c(h=>h!=null&&e.isElement(h),"hc");t.test=f;var v={serialize:g,test:f},b=v;t.default=b}),an=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.test=t.serialize=t.default=void 0;var e=It(),r=globalThis["jest-symbol-do-not-touch"]||globalThis.Symbol,a=typeof r=="function"&&r.for?r.for("react.test.json"):245830487,n=c(f=>{let{props:v}=f;return v?Object.keys(v).filter(b=>v[b]!==void 0).sort():[]},"oi"),i=c((f,v,b,h,l,o)=>++h>v.maxDepth?(0,e.printElementAsLeaf)(f.type,v):(0,e.printElement)(f.type,f.props?(0,e.printProps)(n(f),f.props,v,b+v.indent,h,l,o):"",f.children?(0,e.printChildren)(f.children,v,b+v.indent,h,l,o):"",v,b),"nc");t.serialize=i;var u=c(f=>f&&f.$$typeof===a,"ic");t.test=u;var d={serialize:i,test:u},g=d;t.default=g}),nn=Z(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.DEFAULT_OPTIONS=void 0,t.format=Kt,t.plugins=void 0;var e=f(Ja()),r=Ze(),a=f(Ka()),n=f(Xa()),i=f(Qa()),u=f(Ya()),d=f(rn()),g=f(an());function f(m){return m&&m.__esModule?m:{default:m}}c(f,"t");var v=Object.prototype.toString,b=Date.prototype.toISOString,h=Error.prototype.toString,l=RegExp.prototype.toString,o=c(m=>typeof m.constructor=="function"&&m.constructor.name||"Object","ch"),p=c(m=>typeof window<"u"&&m===window,"vi"),C=/^Symbol\((.*)\)(.*)$/,s=/\n/gi,y=class extends Error{static{c(this,"Is")}constructor(m,S){super(m),this.stack=S,this.name=this.constructor.name}};function A(m){return m==="[object Array]"||m==="[object ArrayBuffer]"||m==="[object DataView]"||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]"}c(A,"Mi");function O(m){return Object.is(m,-0)?"-0":String(m)}c(O,"Ai");function P(m){return`${m}n`}c(P,"Ti");function M(m,S){return S?`[Function ${m.name||"anonymous"}]`:"[Function]"}c(M,"oc");function E(m){return String(m).replace(C,"Symbol($1)")}c(E,"uc");function w(m){return`[${h.call(m)}]`}c(w,"lc");function x(m,S,N,T){if(m===!0||m===!1)return`${m}`;if(m===void 0)return"undefined";if(m===null)return"null";let $=typeof m;if($==="number")return O(m);if($==="bigint")return P(m);if($==="string")return T?`"${m.replace(/"|\\/g,"\\$&")}"`:`"${m}"`;if($==="function")return M(m,S);if($==="symbol")return E(m);let q=v.call(m);return q==="[object WeakMap]"?"WeakMap {}":q==="[object WeakSet]"?"WeakSet {}":q==="[object Function]"||q==="[object GeneratorFunction]"?M(m,S):q==="[object Symbol]"?E(m):q==="[object Date]"?isNaN(+m)?"Date { NaN }":b.call(m):q==="[object Error]"?w(m):q==="[object RegExp]"?N?l.call(m).replace(/[\\^$*+?.()|[\]{}]/g,"\\$&"):l.call(m):m instanceof Error?w(m):null}c(x,"bc");function I(m,S,N,T,$,q){if($.indexOf(m)!==-1)return"[Circular]";$=$.slice(),$.push(m);let L=++T>S.maxDepth,V=S.min;if(S.callToJSON&&!L&&m.toJSON&&typeof m.toJSON=="function"&&!q)return U(m.toJSON(),S,N,T,$,!0);let me=v.call(m);return me==="[object Arguments]"?L?"[Arguments]":`${V?"":"Arguments "}[${(0,r.printListItems)(m,S,N,T,$,U)}]`:A(me)?L?`[${m.constructor.name}]`:`${V||!S.printBasicPrototype&&m.constructor.name==="Array"?"":`${m.constructor.name} `}[${(0,r.printListItems)(m,S,N,T,$,U)}]`:me==="[object Map]"?L?"[Map]":`Map {${(0,r.printIteratorEntries)(m.entries(),S,N,T,$,U," => ")}}`:me==="[object Set]"?L?"[Set]":`Set {${(0,r.printIteratorValues)(m.values(),S,N,T,$,U)}}`:L||p(m)?`[${o(m)}]`:`${V||!S.printBasicPrototype&&o(m)==="Object"?"":`${o(m)} `}{${(0,r.printObjectProperties)(m,S,N,T,$,U)}}`}c(I,"dc");function _(m){return m.serialize!=null}c(_,"Oi");function B(m,S,N,T,$,q){let L;try{L=_(m)?m.serialize(S,N,T,$,q,U):m.print(S,V=>U(V,N,T,$,q),V=>{let me=T+N.indent;return me+V.replace(s,` +${me}`)},{edgeSpacing:N.spacingOuter,min:N.min,spacing:N.spacingInner},N.colors)}catch(V){throw new y(V.message,V.stack)}if(typeof L!="string")throw new Error(`pretty-format: Plugin must return type "string" but instead returned "${typeof L}".`);return L}c(B,"wc");function j(m,S){for(let N=0;Nm,"_i"),X=Oa({callToJSON:!0,compareKeys:void 0,escapeRegex:!1,escapeString:!0,highlight:!1,indent:2,maxDepth:1/0,maxWidth:1/0,min:!1,plugins:[],printBasicPrototype:!0,printFunctionName:!0,theme:ft});t.DEFAULT_OPTIONS=X;function Aa(m){if(Object.keys(m).forEach(S=>{if(!Object.prototype.hasOwnProperty.call(X,S))throw new Error(`pretty-format: Unknown option "${S}".`)}),m.min&&m.indent!==void 0&&m.indent!==0)throw new Error('pretty-format: Options "min" and "indent" cannot be used together.');if(m.theme!==void 0){if(m.theme===null)throw new Error('pretty-format: Option "theme" must not be null.');if(typeof m.theme!="object")throw new Error(`pretty-format: Option "theme" must be of type "object" but instead received "${typeof m.theme}".`)}}c(Aa,"Ni");var Na=c(m=>Wt.reduce((S,N)=>{let T=m.theme&&m.theme[N]!==void 0?m.theme[N]:ft[N],$=T&&e.default[T];if($&&typeof $.close=="string"&&typeof $.open=="string")S[N]=$;else throw new Error(`pretty-format: Option "theme" has a key "${N}" whose value "${T}" is undefined in ansi-styles.`);return S},Object.create(null)),"ki"),_a=c(()=>Wt.reduce((m,S)=>(m[S]={close:"",open:""},m),Object.create(null)),"$i"),Vt=c(m=>{var S;return(S=m?.printFunctionName)!=null?S:X.printFunctionName},"ac"),Gt=c(m=>{var S;return(S=m?.escapeRegex)!=null?S:X.escapeRegex},"xc"),Zt=c(m=>{var S;return(S=m?.escapeString)!=null?S:X.escapeString},"vc"),Jt=c(m=>{var S,N,T,$,q,L,V;return{callToJSON:(S=m?.callToJSON)!=null?S:X.callToJSON,colors:m!=null&&m.highlight?Na(m):_a(),compareKeys:typeof m?.compareKeys=="function"||m?.compareKeys===null?m.compareKeys:X.compareKeys,escapeRegex:Gt(m),escapeString:Zt(m),indent:m!=null&&m.min?"":Ia((N=m?.indent)!=null?N:X.indent),maxDepth:(T=m?.maxDepth)!=null?T:X.maxDepth,maxWidth:($=m?.maxWidth)!=null?$:X.maxWidth,min:(q=m?.min)!=null?q:X.min,plugins:(L=m?.plugins)!=null?L:X.plugins,printBasicPrototype:(V=m?.printBasicPrototype)!=null?V:!0,printFunctionName:Vt(m),spacingInner:m!=null&&m.min?" ":` `,spacingOuter:m!=null&&m.min?"":` -`}},"fc");function Ia(m){return new Array(m+1).join(" ")}c(Ia,"Ci");function Kt(m,S){if(S&&(Aa(S),S.plugins)){let T=j(S.plugins,m);if(T!==null)return B(T,m,Jt(S),"",0,[])}let N=x(m,Vt(S),Gt(S),Zt(S));return N!==null?N:I(m,Jt(S),"",0,[])}c(Kt,"Sc");var $a={AsymmetricMatcher:a.default,DOMCollection:n.default,DOMElement:i.default,Immutable:u.default,ReactElement:d.default,ReactTestComponent:g.default};t.plugins=$a;var Ta=Kt;t.default=Ta}),un=nr(Za());function st(t,e,r,a){function n(i){return i instanceof r?i:new r(function(u){u(i)})}return c(n,"i"),new(r||(r=Promise))(function(i,u){function d(v){try{f(a.next(v))}catch(b){u(b)}}c(d,"l");function g(v){try{f(a.throw(v))}catch(b){u(b)}}c(g,"d");function f(v){v.done?i(v.value):n(v.value).then(d,g)}c(f,"b"),f((a=a.apply(t,e||[])).next())})}c(st,"Xs");function dt(t,e){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},a,n,i,u;return u={next:d(0),throw:d(1),return:d(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function d(f){return function(v){return g([f,v])}}function g(f){if(a)throw new TypeError("Generator is already executing.");for(;r;)try{if(a=1,n&&(i=f[0]&2?n.return:f[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,f[1])).done)return i;switch(n=0,i&&(f=[f[0]&2,i.value]),f[0]){case 0:case 1:i=f;break;case 4:return r.label++,{value:f[1],done:!1};case 5:r.label++,n=f[1],f=[0];continue;case 7:f=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]0)&&!(n=a.next()).done;)i.push(n.value)}catch(d){u={error:d}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(u)throw u.error}}return i}c(Ve,"rs");function ye(t,e,r){if(r||arguments.length===2)for(var a=0,n=e.length,i;an.character===e);if(r!==void 0)return r.value;let a=parseFloat(e);if(isNaN(a))throw new Error(`Not a number: '${e}'`);return a}static simplifyByRounding(e,r){if(e<0)return-re.simplifyByRounding(-e,r);let a=e%1;if(a<=r||1-a<=r)return Math.round(e);let n=re.matchUnicodeFraction(u=>Math.abs(u.value-e)<=r);if(n!==void 0)return n.value;let i=re.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?Math.sqrt(i.value):e}static matchUnicodeFraction(e){for(let r of cr)if(e(r))return r}constructor(e,r,a,n){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}formatFloat(e){return this.allowAbbreviation?this.abbreviateFloat(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateFloat(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=re.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}};te.CONSISTENT=new te(!1,0,2,", "),te.EXACT=new te(!0,0,void 0,", "),te.MINIFIED=new te(!0,0,void 0,","),te.SIMPLIFIED=new te(!0,5e-4,3,", ");var Cn=te,er=class At{static{c(this,"ph")}static matchUnicodeFraction(e){for(let r of cr)if(e(r))return r}constructor(e,r,a,n=", "){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}format(e){return this.allowAbbreviation?this.abbreviateNumber(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateNumber(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=At.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}},Pe={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0},ge=class D{static{c(this,"A")}constructor(e,r){this.isEqualTo=this.eq.bind(this),this.isApproximatelyEqualTo=this.nearlyEq.bind(this),this.conj=this.conjugate.bind(this),this.plus=this.add.bind(this),this.subtract=this.sub.bind(this),this.minus=this.sub.bind(this),this.multiply=this.mult.bind(this),this.times=this.mult.bind(this),this.dividedBy=this.div.bind(this),this.magnitude=this.abs.bind(this),this.norm2=this.abs2.bind(this),this.angle=this.arg.bind(this),this.phase=this.arg.bind(this),this.real=e,this.imag=r,this.isApproximatelyEqualTo=this.nearlyEq,this.isEqualTo=this.eq,this.conj=this.conjugate,this.plus=this.add,this.subtract=this.sub,this.minus=this.sub,this.multiply=this.mult,this.times=this.mult,this.dividedBy=this.div,this.magnitude=this.abs,this.norm2=this.abs2,this.angle=this.arg,this.phase=this.arg}static from(e){return typeof e=="number"?new D(e,0):e}static real(e){return typeof e=="number"?e:e.real}static imag(e){return typeof e=="number"?0:e.imag}static polar(e,r){let[a,n]=this.cosAndSin(r);return new D(e*a,e*n)}static cosAndSin(e){let r=Math.PI/4,a=Math.round(e/r);if(a*r===e){let n=Math.sqrt(.5);return[[1,0],[n,n],[0,1],[-n,n],[-1,0],[-n,-n],[0,-1],[n,-n]][a&7]}return[Math.cos(e),Math.sin(e)]}eq(e){return typeof e=="number"?this.real===e&&this.imag===0:e instanceof D?this.real===e.real&&this.imag===e.imag:!1}nearlyEq(e,r){if(typeof e=="number"||e instanceof D){let a=this.sub(D.from(e));return Math.abs(a.real)<=r&&Math.abs(a.imag)<=r&&a.abs()<=r}return!1}conjugate(){return new D(this.real,-this.imag)}neg(){return new D(-this.real,-this.imag)}add(e){let r=D.from(e);return new D(this.real+r.real,this.imag+r.imag)}sub(e){let r=D.from(e);return new D(this.real-r.real,this.imag-r.imag)}mult(e){let r=D.from(e);return new D(this.real*r.real-this.imag*r.imag,this.real*r.imag+this.imag*r.real)}div(e){let r=D.from(e),a=r.abs2();if(a===0)return R(Error("Division by Zero"));let n=this.mult(r.conjugate());return W(new D(n.real/a,n.imag/a))}abs(){return Math.sqrt(this.abs2())}abs2(){return this.real*this.real+this.imag*this.imag}arg(){return Math.atan2(this.imag,this.real)}pow(e){return e===.5&&this.imag===0&&this.real>=0?new D(Math.sqrt(this.real),0):this.eq(D.ZERO)?D.ZERO:this.ln().mult(D.from(e)).exp()}exp(){return D.polar(Math.exp(this.real),this.imag)}format(e=Pe){let r=new er(e.allowAbbreviation===void 0?Pe.allowAbbreviation:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits);return r.allowAbbreviation?this.toStringAllowSingleValue(r):this.toStringBothValues(r)}toString(){let e=new er(Pe.allowAbbreviation,Pe.maxAbbreviationError,Pe.fixedDigits);return this.toStringAllowSingleValue(e)}ln(){return new D(Math.log(this.abs()),this.arg())}toStringAllowSingleValue(e){if(this.canImagPartBeOmitted(e.maxAbbreviationError))return e.format(this.real);if(this.canRealPartBeOmitted(e.maxAbbreviationError)){let r;return this.isImagFactorCloseToOne(e.maxAbbreviationError)?r="":this.isImagFactorMinusOne(e.maxAbbreviationError)?r="-":r=e.format(this.imag),`${r}i`}return this.toStringBothValues(e)}toStringBothValues(e){let r=this.imag>=0?"+":"-",a=this.canImagFactorBeOmitted(e)?"":e.format(Math.abs(this.imag));return`${(e.allowAbbreviation||e.fixedDigits===void 0||this.real<0?"":"+")+e.format(this.real)+r+a}i`}canRealPartBeOmitted(e){return Math.abs(this.real)<=e}canImagPartBeOmitted(e){return Math.abs(this.imag)<=e}isImagFactorCloseToOne(e){return Math.abs(this.imag-1)<=e}isImagFactorMinusOne(e){return Math.abs(this.imag+1)<=e}canImagFactorBeOmitted(e){return e.allowAbbreviation&&Math.abs(Math.abs(this.imag)-1)<=e.maxAbbreviationError}};ge.ZERO=new ge(0,0),ge.ONE=new ge(1,0),ge.I=new ge(0,1);var Y=ge,mt=0,Be=class extends Error{static{c(this,"ss")}constructor(t,e){super(t),this.detailsObj=e,this.name="Error",this.message=t,this.stack=new Error().stack,this.stack!==void 0&&(this.stack=this.stack.replace(/^Error\n\s+at new DetailedError (\S+)\s?\n\s+at /,` +`}},"fc");function Ia(m){return new Array(m+1).join(" ")}c(Ia,"Ci");function Kt(m,S){if(S&&(Aa(S),S.plugins)){let T=j(S.plugins,m);if(T!==null)return B(T,m,Jt(S),"",0,[])}let N=x(m,Vt(S),Gt(S),Zt(S));return N!==null?N:I(m,Jt(S),"",0,[])}c(Kt,"Sc");var $a={AsymmetricMatcher:a.default,DOMCollection:n.default,DOMElement:i.default,Immutable:u.default,ReactElement:d.default,ReactTestComponent:g.default};t.plugins=$a;var Ta=Kt;t.default=Ta}),un=nr(Za());function st(t,e,r,a){function n(i){return i instanceof r?i:new r(function(u){u(i)})}return c(n,"i"),new(r||(r=Promise))(function(i,u){function d(v){try{f(a.next(v))}catch(b){u(b)}}c(d,"l");function g(v){try{f(a.throw(v))}catch(b){u(b)}}c(g,"d");function f(v){v.done?i(v.value):n(v.value).then(d,g)}c(f,"b"),f((a=a.apply(t,e||[])).next())})}c(st,"Xs");function dt(t,e){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},a,n,i,u;return u={next:d(0),throw:d(1),return:d(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function d(f){return function(v){return g([f,v])}}function g(f){if(a)throw new TypeError("Generator is already executing.");for(;r;)try{if(a=1,n&&(i=f[0]&2?n.return:f[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,f[1])).done)return i;switch(n=0,i&&(f=[f[0]&2,i.value]),f[0]){case 0:case 1:i=f;break;case 4:return r.label++,{value:f[1],done:!1};case 5:r.label++,n=f[1],f=[0];continue;case 7:f=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]0)&&!(n=a.next()).done;)i.push(n.value)}catch(d){u={error:d}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(u)throw u.error}}return i}c(Ve,"ys");function ye(t,e,r){if(r||arguments.length===2)for(var a=0,n=e.length,i;an.character===e);if(r!==void 0)return r.value;let a=parseFloat(e);if(isNaN(a))throw new Error(`Not a number: '${e}'`);return a}static simplifyByRounding(e,r){if(e<0)return-re.simplifyByRounding(-e,r);let a=e%1;if(a<=r||1-a<=r)return Math.round(e);let n=re.matchUnicodeFraction(u=>Math.abs(u.value-e)<=r);if(n!==void 0)return n.value;let i=re.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?Math.sqrt(i.value):e}static matchUnicodeFraction(e){for(let r of cr)if(e(r))return r}constructor(e,r,a,n){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}formatFloat(e){return this.allowAbbreviation?this.abbreviateFloat(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateFloat(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=re.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}};te.CONSISTENT=new te(!1,0,2,", "),te.EXACT=new te(!0,0,void 0,", "),te.MINIFIED=new te(!0,0,void 0,","),te.SIMPLIFIED=new te(!0,5e-4,3,", ");var Cn=te,er=class At{static{c(this,"ph")}static matchUnicodeFraction(e){for(let r of cr)if(e(r))return r}constructor(e,r,a,n=", "){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}format(e){return this.allowAbbreviation?this.abbreviateNumber(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateNumber(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=At.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}},Pe={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0},ge=class D{static{c(this,"A")}constructor(e,r){this.isEqualTo=this.eq.bind(this),this.isApproximatelyEqualTo=this.nearlyEq.bind(this),this.conj=this.conjugate.bind(this),this.plus=this.add.bind(this),this.subtract=this.sub.bind(this),this.minus=this.sub.bind(this),this.multiply=this.mult.bind(this),this.times=this.mult.bind(this),this.dividedBy=this.div.bind(this),this.magnitude=this.abs.bind(this),this.norm2=this.abs2.bind(this),this.angle=this.arg.bind(this),this.phase=this.arg.bind(this),this.real=e,this.imag=r,this.isApproximatelyEqualTo=this.nearlyEq,this.isEqualTo=this.eq,this.conj=this.conjugate,this.plus=this.add,this.subtract=this.sub,this.minus=this.sub,this.multiply=this.mult,this.times=this.mult,this.dividedBy=this.div,this.magnitude=this.abs,this.norm2=this.abs2,this.angle=this.arg,this.phase=this.arg}static from(e){return typeof e=="number"?new D(e,0):e}static real(e){return typeof e=="number"?e:e.real}static imag(e){return typeof e=="number"?0:e.imag}static polar(e,r){let[a,n]=this.cosAndSin(r);return new D(e*a,e*n)}static cosAndSin(e){let r=Math.PI/4,a=Math.round(e/r);if(a*r===e){let n=Math.sqrt(.5);return[[1,0],[n,n],[0,1],[-n,n],[-1,0],[-n,-n],[0,-1],[n,-n]][a&7]}return[Math.cos(e),Math.sin(e)]}eq(e){return typeof e=="number"?this.real===e&&this.imag===0:e instanceof D?this.real===e.real&&this.imag===e.imag:!1}nearlyEq(e,r){if(typeof e=="number"||e instanceof D){let a=this.sub(D.from(e));return Math.abs(a.real)<=r&&Math.abs(a.imag)<=r&&a.abs()<=r}return!1}conjugate(){return new D(this.real,-this.imag)}neg(){return new D(-this.real,-this.imag)}add(e){let r=D.from(e);return new D(this.real+r.real,this.imag+r.imag)}sub(e){let r=D.from(e);return new D(this.real-r.real,this.imag-r.imag)}mult(e){let r=D.from(e);return new D(this.real*r.real-this.imag*r.imag,this.real*r.imag+this.imag*r.real)}div(e){let r=D.from(e),a=r.abs2();if(a===0)return R(Error("Division by Zero"));let n=this.mult(r.conjugate());return W(new D(n.real/a,n.imag/a))}abs(){return Math.sqrt(this.abs2())}abs2(){return this.real*this.real+this.imag*this.imag}arg(){return Math.atan2(this.imag,this.real)}pow(e){return e===.5&&this.imag===0&&this.real>=0?new D(Math.sqrt(this.real),0):this.eq(D.ZERO)?D.ZERO:this.ln().mult(D.from(e)).exp()}exp(){return D.polar(Math.exp(this.real),this.imag)}format(e=Pe){let r=new er(e.allowAbbreviation===void 0?Pe.allowAbbreviation:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits);return r.allowAbbreviation?this.toStringAllowSingleValue(r):this.toStringBothValues(r)}toString(){let e=new er(Pe.allowAbbreviation,Pe.maxAbbreviationError,Pe.fixedDigits);return this.toStringAllowSingleValue(e)}ln(){return new D(Math.log(this.abs()),this.arg())}toStringAllowSingleValue(e){if(this.canImagPartBeOmitted(e.maxAbbreviationError))return e.format(this.real);if(this.canRealPartBeOmitted(e.maxAbbreviationError)){let r;return this.isImagFactorCloseToOne(e.maxAbbreviationError)?r="":this.isImagFactorMinusOne(e.maxAbbreviationError)?r="-":r=e.format(this.imag),`${r}i`}return this.toStringBothValues(e)}toStringBothValues(e){let r=this.imag>=0?"+":"-",a=this.canImagFactorBeOmitted(e)?"":e.format(Math.abs(this.imag));return`${(e.allowAbbreviation||e.fixedDigits===void 0||this.real<0?"":"+")+e.format(this.real)+r+a}i`}canRealPartBeOmitted(e){return Math.abs(this.real)<=e}canImagPartBeOmitted(e){return Math.abs(this.imag)<=e}isImagFactorCloseToOne(e){return Math.abs(this.imag-1)<=e}isImagFactorMinusOne(e){return Math.abs(this.imag+1)<=e}canImagFactorBeOmitted(e){return e.allowAbbreviation&&Math.abs(Math.abs(this.imag)-1)<=e.maxAbbreviationError}};ge.ZERO=new ge(0,0),ge.ONE=new ge(1,0),ge.I=new ge(0,1);var Y=ge,mt=0,Be=class extends Error{static{c(this,"ss")}constructor(t,e){super(t),this.detailsObj=e,this.name="Error",this.message=t,this.stack=new Error().stack,this.stack!==void 0&&(this.stack=this.stack.replace(/^Error\n\s+at new DetailedError (\S+)\s?\n\s+at /,` `)),mt++;try{this.details=mt===1?(0,ln.format)(this.detailsObj):"(failed to prettyFormat detailsObj due to possibly re-entrancy)"}catch(r){console.error(r),this.details="(failed to prettyFormat detailsObj, see the console for details)"}finally{mt--}}},sn=c(()=>({message:"Parse Error"}),"Bi"),hr=class pr{static{c(this,"kc")}static need(e,r,a){if(e!==!0){let n=a===void 0?"(not provided)":`[${Array.prototype.slice.call(a).join(", ")}]`,i=`Precondition failed Message: ${r===void 0?"(not provided)":r} -Args: ${n}`;throw new Error(i)}}static notNull(e){pr.need(e!=null,"notNull")}static get urlJson(){let e=new URL(location.href,window.location.origin),r=decodeURIComponent(e.pathname),a=r.lastIndexOf("/");return r.substring(a+1)}};hr.safeJsonParse=Ge.fromThrowable(JSON.parse,sn);var bt=hr,dn="Bloch",mn="\u2022",bn="H",gn="Measure",vn="P",yn="QFT\u2020",wn="QFT",xn="X^\xBD",En="Rx",Mn="Ry",Sn="Rz",On="S\u2020",An="S",Nn="\u2026",_n="Swap",In="T\u2020",$n="T",Tn="|0>",kn="|1>",Pn="X",Bn="Y",jn="Z",Dn={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0,itemSeparator:", "},K=class L{static{c(this,"c")}constructor(e,r,a){this.plus=this.add.bind(this),this.width=e,this.height=r,this.buffer=a,this.plus=this.add}static rows(e){let r=e.length;if(r===0)return R(Error("rows is empty"));let a=e[0].length;return e[0].length===0?R(Error("rows[0] is empty")):L.build(r,a,(n,i)=>e[n][i])}static column_vector(...e){return L.build(e.length,1,r=>e[r])}static build(e,r,a){let n=new Float64Array(r*e*2);for(let i=0;ie[a])._unsafeUnwrap()}static identity(e){let r=new Float64Array(e*e*2);for(let a=0;ae[a*r+n])}static create(e,r,a){return e<0?R(Error(`width(${e}) < 0`)):r<0?R(Error(`height(${r}) < 0`)):e*r*2!==a.length?R(Error(`width(${e})*height(${r})*2 !== buffer.length(${a.length})`)):W(new L(e,r,a))}element(e,r){if(e<0||r<0||e>=this.width||r>=this.height)return R(Error("Element out of range"));let a=(this.width*r+e)*2;return W(new Y(this.buffer[a],this.buffer[a+1]))}set(e,r,a){if(e<0||r<0||e>=this.width||r>=this.height)return R(Error("Element out of range"));let n=(this.width*r+e)*2;return this.buffer[n]=a.real,this.buffer[n+1]=a.imag,W(this)}columnAt(e){if(e<0)return R(Error("colIndex < 0"));if(e>this.width)return R(Error("colIndex > this.width"));let r=[];for(let a=0;aze(0,this.width-1).map(r=>this.element(r,e)._unsafeUnwrap()))}isHermitian(e=0){if(this.width!==this.height)return!1;for(let r=0;re||Math.abs(this.buffer[n+1]+this.buffer[i+1])>e)return!1}return!0}trace(){let e=0,r=0,a=this.width*2+2;for(let n=0;nthis.buffer[a]===r.buffer[a])}nearlyEq(e,r){return e instanceof L&&this.width===e.width&&this.height===e.height&&Math.sqrt(this.sub(e)._unsafeUnwrap().norm2())<=r}format(e=Dn){let r=new Cn(e.allowAbbreviation===void 0?!0:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits,e.itemSeparator||", ");return`{{${this.rows().map(a=>a.map(n=>n.format(r)).join(r.itemSeparator)).join(`}${r.itemSeparator}{`)}}}`}toString(){return this.format()}qubitDensityMatrixToBlochVector(){if(this.width!==2||this.height!==2)throw new Be("Need a 2x2 density matrix.",this);if(!this.isHermitian(.01))throw new Be("Density matrix should be Hermitian.",this);if(!this.trace().nearlyEq(1,.01))throw new Be("Density matrix should have unit trace.",this);let[e,r,a,n,i,u,d,g]=this.buffer,f=i+a,v=u-n,b=e-d;return[f,v,b]}clone(){return new L(this.width,this.height,this.buffer.slice())}norm2(){let e=0;for(let r of this.buffer)e+=r*r;return e}multMatrix(e){if(this.width!==e.height)return R(Error("Incompatible sizes."));let r=e.width,a=this.height,n=this.width,i=new Float64Array(r*a*2);for(let u=0;u=2<u.tensorProduct(d))}qubitDensityMatrix(e){if(e<0||e>=this.nqubit)throw new Be("Qubit index out of range",e);let r=[...Array(Math.log2(this.matrix.height)).keys()].filter(i=>i!==e),a=c((i,u)=>u.sort().reverse().reduce((d,g)=>{let f=d>>g+1;f=f<(i>>b&1)===(u>>b&1)))continue;let d=this.matrix.element(0,u)._unsafeUnwrap().times(this.matrix.element(0,i)._unsafeUnwrap().conjugate());if(d.isEqualTo(0))continue;let g=a(u,r)===0?K.column_vector(1,0)._unsafeUnwrap():K.column_vector(0,1)._unsafeUnwrap(),f=a(i,r)===0?K.row(1,0):K.row(0,1),v=g.mult(f)._unsafeUnwrap();n=n.add(v.mult(d)._unsafeUnwrap())._unsafeUnwrap()}return n}};function Fn(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}c(Fn,"Jc");var fr=class{static{c(this,"tc")}constructor(t){typeof t=="string"?this.state=new Rn(t):this.state=t,this.measuredBits={},this.flags={}}runStep(t){this.blochVectors={};for(let e of t)switch(e.type){case Tn:this.write(0,...e.targets);break;case kn:this.write(1,...e.targets);break;case dn:for(let r of e.targets)this.blochVectors[r]=this.state.blochVector(r);break;case bn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.ach(e.controls||[],e.antiControls||[],...e.targets):this.h(...e.targets);break;case Pn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acnot(e.controls||[],e.antiControls||[],...e.targets):this.x(...e.targets);break;case Bn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acy(e.controls||[],e.antiControls||[],...e.targets):this.y(...e.targets);break;case jn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acz(e.controls||[],e.antiControls||[],...e.targets):this.z(...e.targets);break;case Nn:break;case vn:{if(!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acphase(e.controls||[],e.antiControls||[],e.angle,e.targets[0]):this.cphase(e.targets.slice(1),e.angle,e.targets[0]);break}case An:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acs(e.controls||[],e.antiControls||[],...e.targets):this.s(...e.targets);break}case On:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acsDagger(e.controls||[],e.antiControls||[],...e.targets):this.sDagger(...e.targets);break}case $n:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.act(e.controls||[],e.antiControls||[],...e.targets):this.t(...e.targets);break}case In:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.actDagger(e.controls||[],e.antiControls||[],...e.targets):this.tDagger(...e.targets);break}case wn:this.qft(e.span,...e.targets);break;case yn:this.qftDagger(e.span,...e.targets);break;case mn:{this.cz(e.targets.slice(1),e.targets[0]);break}case _n:{e.controls&&e.controls.length===1?this.cswap(e.controls[0],e.targets[0],e.targets[1]):this.swap(e.targets[0],e.targets[1]);break}case xn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrnot(e.controls||[],e.antiControls||[],...e.targets):this.rnot(...e.targets);break;case En:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrx(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.rx(e.angle,...e.targets);break;case Mn:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acry(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.ry(e.angle,...e.targets);break;case Sn:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrz(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.rz(e.angle,...e.targets);break;case gn:for(let r of e.targets)this.measure(r),e.flag&&(this.flags[e.flag]=this.measuredBits[r]===1);break;default:throw new Error("Unknown instruction")}return this}write(t,...e){for(let r of e){let a=Fn(this.pZero(r),5);(t===0&&a===0||t===1&&a===1)&&this.x(r)}return this}h(...t){return this.u(gt,...t),this}ch(t,...e){return this.cu(t,gt,...e),this}ach(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,gt,...r),this.x(...e),this}x(...t){return this.u(vt,...t),this}cnot(t,...e){return this.cu(t,vt,...e),this}acnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,vt,...r),this.x(...e),this}y(...t){return this.u(yt,...t),this}cy(t,...e){return this.cu(t,yt,...e),this}acy(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,yt,...r),this.x(...e),this}z(...t){return this.u(wt,...t),this}cz(t,...e){return this.cu(t,wt,...e),this}acz(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,wt,...r),this.x(...e),this}phase(t,...e){return this.u(xt(t),...e),this}cphase(t,e,...r){return this.cu(t,xt(e),...r),this}acphase(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,xt(r),...a),this.x(...e),this}s(...t){return this.u(Nt,...t),this}acs(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Nt,...r),this.x(...e),this}sDagger(...t){return this.u(tr,...t),this}acsDagger(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,tr,...r),this.x(...e),this}t(...t){return this.u(We,...t),this}ct(t,...e){return this.cu(t,We,...e),this}act(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,We,...r),this.x(...e),this}tDagger(...t){return this.u(rr,...t),this}actDagger(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,rr,...r),this.x(...e),this}swap(t,e){return this.cnot(t,e).cnot(e,t).cnot(t,e),this}cswap(t,e,r){return this.cnot([t,e],r).cnot([t,r],e).cnot([t,e],r),this}rnot(...t){return this.u(Et,...t),this}crnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Et,...r),this.x(...e),this}acrnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Et,...r),this.x(...e),this}rx(t,...e){return this.u(Mt(t),...e),this}acrx(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,Mt(r),...a),this.x(...e),this}crx(t,e,...r){return this.cu(t,Mt(e),...r),this}ry(t,...e){return this.u(St(t),...e),this}cry(t,e,...r){return this.cu(t,St(e),...r),this}acry(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,St(r),...a),this.x(...e),this}rz(t,...e){return this.u(Ot(t),...e),this}crz(t,e,...r){return this.cu(t,Ot(e),...r),this}acrz(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,Ot(r),...a),this.x(...e),this}qft(t,...e){for(let r of e)this.qftSingleTargetBit(t,r);return this}qftSingleTargetBit(t,e){switch(t){case 1:{this.h(e);break}case 2:{this.swap(e,e+1).h(e).cphase(e+1,"\u03C0/2",e).h(e+1);break}case 3:{this.swap(e,e+2).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).h(e+2);break}case 4:{this.swap(e,e+3).swap(e+1,e+2).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).h(e+3);break}case 5:{this.swap(e,e+4).swap(e+1,e+3).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).h(e+4);break}case 6:{this.swap(e,e+5).swap(e+1,e+4).swap(e+2,e+3).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).h(e+5);break}case 7:{this.swap(e,e+6).swap(e+1,e+5).swap(e+2,e+4).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).h(e+6);break}case 8:{this.swap(e,e+7).swap(e+1,e+6).swap(e+2,e+5).swap(e+3,e+4).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).h(e+7);break}case 9:{this.swap(e,e+8).swap(e+1,e+7).swap(e+2,e+6).swap(e+3,e+5).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).h(e+8);break}case 10:{this.swap(e,e+9).swap(e+1,e+8).swap(e+2,e+7).swap(e+3,e+6).swap(e+4,e+5).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).h(e+9);break}case 11:{this.swap(e,e+10).swap(e+1,e+9).swap(e+2,e+8).swap(e+3,e+7).swap(e+4,e+6).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).h(e+10);break}case 12:{this.swap(e,e+11).swap(e+1,e+10).swap(e+2,e+9).swap(e+3,e+8).swap(e+4,e+7).swap(e+5,e+6).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).h(e+11);break}case 13:{this.swap(e,e+12).swap(e+1,e+11).swap(e+2,e+10).swap(e+3,e+9).swap(e+4,e+8).swap(e+5,e+7).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).h(e+12);break}case 14:{this.swap(e,e+13).swap(e+1,e+12).swap(e+2,e+11).swap(e+3,e+10).swap(e+4,e+9).swap(e+5,e+8).swap(e+6,e+7).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).h(e+13);break}case 15:{this.swap(e,e+14).swap(e+1,e+13).swap(e+2,e+12).swap(e+3,e+11).swap(e+4,e+10).swap(e+5,e+9).swap(e+6,e+8).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).cphase(e+14,"\u03C0/16384",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).cphase(e+14,"\u03C0/8192",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).cphase(e+14,"\u03C0/4096",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).cphase(e+14,"\u03C0/2048",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).cphase(e+14,"\u03C0/1024",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).cphase(e+14,"\u03C0/512",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).cphase(e+14,"\u03C0/256",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).cphase(e+14,"\u03C0/128",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).cphase(e+14,"\u03C0/64",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).cphase(e+14,"\u03C0/32",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).cphase(e+14,"\u03C0/16",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).cphase(e+15,"\u03C0/8",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).cphase(e+15,"\u03C0/4",e+11).h(e+13).cphase(e+15,"\u03C0/2",e+12).h(e+14);break}case 16:{this.swap(e,e+15).swap(e+1,e+14).swap(e+2,e+13).swap(e+3,e+12).swap(e+4,e+11).swap(e+5,e+10).swap(e+6,e+9).swap(e+7,e+8).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).cphase(e+14,"\u03C0/16384",e).cphase(e+15,"\u03C0/32768",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).cphase(e+14,"\u03C0/8192",e+1).cphase(e+15,"\u03C0/16384",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).cphase(e+14,"\u03C0/4096",e+2).cphase(e+15,"\u03C0/8192",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).cphase(e+14,"\u03C0/2048",e+3).cphase(e+15,"\u03C0/4096",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).cphase(e+14,"\u03C0/1024",e+4).cphase(e+15,"\u03C0/2048",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).cphase(e+14,"\u03C0/512",e+5).cphase(e+15,"\u03C0/1024",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).cphase(e+14,"\u03C0/256",e+6).cphase(e+15,"\u03C0/512",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).cphase(e+14,"\u03C0/128",e+7).cphase(e+15,"\u03C0/256",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).cphase(e+14,"\u03C0/64",e+8).cphase(e+15,"\u03C0/128",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).cphase(e+14,"\u03C0/32",e+8).cphase(e+15,"\u03C0/64",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).cphase(e+14,"\u03C0/16",e+9).cphase(e+15,"\u03C0/32",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).cphase(e+15,"\u03C0/8",e+10).cphase(e+16,"\u03C0/16",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).cphase(e+15,"\u03C0/4",e+11).cphase(e+16,"\u03C0/8",e+11).h(e+13).cphase(e+15,"\u03C0/2",e+12).cphase(e+16,"\u03C0/4",e+12).h(e+14).cphase(e+16,"\u03C0/2",e+13).h(e+15);break}default:throw new Error(`Invalid span: ${t}`)}return this}qftDagger(t,...e){for(let r of e)this.qftDaggerSingleTargetBit(t,r);return this}qftDaggerSingleTargetBit(t,e){switch(t){case 1:{this.h(e);break}case 2:{this.h(e+1).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+1);break}case 3:{this.h(e+2).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+2);break}case 4:{this.h(e+3).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+3).swap(e+1,e+2);break}case 5:{this.h(e+4).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+4).swap(e+1,e+3);break}case 6:{this.h(e+5).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+5).swap(e+1,e+4).swap(e+2,e+3);break}case 7:{this.h(e+6).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+6).swap(e+1,e+5).swap(e+2,e+4);break}case 8:{this.h(e+7).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+7).swap(e+1,e+6).swap(e+2,e+5).swap(e+3,e+4);break}case 9:{this.h(e+8).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+8).swap(e+1,e+7).swap(e+2,e+6).swap(e+3,e+5);break}case 10:{this.h(e+9).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+9).swap(e+1,e+8).swap(e+2,e+7).swap(e+3,e+6).swap(e+4,e+5);break}case 11:{this.h(e+10).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+10).swap(e+1,e+9).swap(e+2,e+8).swap(e+3,e+7).swap(e+4,e+6);break}case 12:{this.h(e+11).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+11).swap(e+1,e+10).swap(e+2,e+9).swap(e+3,e+8).swap(e+4,e+7).swap(e+5,e+6);break}case 13:{this.h(e+12).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+12).swap(e+1,e+11).swap(e+2,e+10).swap(e+3,e+9).swap(e+4,e+8).swap(e+5,e+7);break}case 14:{this.h(e+13).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e).h(e+10).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+13).swap(e+1,e+12).swap(e+2,e+11).swap(e+3,e+10).swap(e+4,e+9).swap(e+5,e+8).swap(e+6,e+7);break}case 15:{this.h(e+14).cphase(e+14,"-\u03C0/2",e+13).h(e+13).cphase(e+14,"-\u03C0/4",e+12).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+14,"-\u03C0/8",e+11).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+14,"-\u03C0/16",e+10).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+14,"-\u03C0/32",e+9).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+14,"-\u03C0/64",e+8).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+14,"-\u03C0/128",e+7).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+14,"-\u03C0/256",e+6).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+14,"-\u03C0/512",e+5).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+14,"-\u03C0/1024",e+4).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+14,"-\u03C0/2048",e+3).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+14,"-\u03C0/4096",e+2).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+14,"-\u03C0/8192",e+1).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+14,"-\u03C0/16384",e).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+14).swap(e+1,e+13).swap(e+2,e+12).swap(e+3,e+11).swap(e+4,e+10).swap(e+5,e+9).swap(e+6,e+8);break}case 16:{this.h(e+15).cphase(e+15,"-\u03C0/2",e+14).h(e+14).cphase(e+15,"-\u03C0/4",e+13).cphase(e+14,"-\u03C0/4",e+13).h(e+13).cphase(e+15,"-\u03C0/8",e+12).cphase(e+14,"-\u03C0/4",e+12).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+15,"-\u03C0/16",e+11).cphase(e+14,"-\u03C0/8",e+11).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+15,"-\u03C0/32",e+10).cphase(e+14,"-\u03C0/16",e+10).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+15,"-\u03C0/64",e+9).cphase(e+14,"-\u03C0/32",e+9).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+15,"-\u03C0/128",e+8).cphase(e+14,"-\u03C0/64",e+8).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+15,"-\u03C0/256",e+7).cphase(e+14,"-\u03C0/128",e+7).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+15,"-\u03C0/512",e+6).cphase(e+14,"-\u03C0/256",e+6).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+15,"-\u03C0/1024",e+5).cphase(e+14,"-\u03C0/512",e+5).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+15,"-\u03C0/2048",e+4).cphase(e+14,"-\u03C0/1024",e+4).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+15,"-\u03C0/4096",e+3).cphase(e+14,"-\u03C0/2048",e+3).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+15,"-\u03C0/8192",e+2).cphase(e+14,"-\u03C0/4096",e+2).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+15,"-\u03C0/16384",e+1).cphase(e+14,"-\u03C0/8192",e+1).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+15,"-\u03C0/32768",e).cphase(e+14,"-\u03C0/16384",e).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e+1,e+15).swap(e+2,e+14).swap(e+3,e+13).swap(e+4,e+12).swap(e+5,e+11).swap(e+6,e+10).swap(e+7,e+9).swap(e+8,e+8).swap(e+9,e+7).swap(e+10,e+6);break}default:throw new Error(`Invalid span: ${t}`)}return this}measure(...t){for(let e of t){let r=this.pZero(e);if(Math.random()<=r){for(let a=0;a<1<n|1<0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]0)&&!(n=a.next()).done;)i.push(n.value)}catch(d){u={error:d}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(u)throw u.error}}return i}c(Ke,"__read");function Ee(t,e,r){if(r||arguments.length===2)for(var a=0,n=e.length,i;an.character===e);if(r!==void 0)return r.value;let a=parseFloat(e);if(isNaN(a))throw new Error(`Not a number: '${e}'`);return a}static simplifyByRounding(e,r){if(e<0)return-ue.simplifyByRounding(-e,r);let a=e%1;if(a<=r||1-a<=r)return Math.round(e);let n=ue.matchUnicodeFraction(u=>Math.abs(u.value-e)<=r);if(n!==void 0)return n.value;let i=ue.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?Math.sqrt(i.value):e}static matchUnicodeFraction(e){for(let r of xa)if(e(r))return r}constructor(e,r,a,n){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}formatFloat(e){return this.allowAbbreviation?this.abbreviateFloat(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateFloat(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=ue.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}};de.CONSISTENT=new de(!1,0,2,", "),de.EXACT=new de(!0,0,void 0,", "),de.MINIFIED=new de(!0,0,void 0,","),de.SIMPLIFIED=new de(!0,5e-4,3,", ");var wa=class zt{static{c(this,"r")}static matchUnicodeFraction(e){for(let r of xa)if(e(r))return r}constructor(e,r,a,n=", "){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}format(e){return this.allowAbbreviation?this.abbreviateNumber(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateNumber(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=zt.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}},qe={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0},ke=class F{static{c(this,"a")}constructor(e,r){this.isEqualTo=this.eq.bind(this),this.isApproximatelyEqualTo=this.nearlyEq.bind(this),this.conj=this.conjugate.bind(this),this.plus=this.add.bind(this),this.subtract=this.sub.bind(this),this.minus=this.sub.bind(this),this.multiply=this.mult.bind(this),this.times=this.mult.bind(this),this.dividedBy=this.div.bind(this),this.magnitude=this.abs.bind(this),this.norm2=this.abs2.bind(this),this.angle=this.arg.bind(this),this.phase=this.arg.bind(this),this.real=e,this.imag=r,this.isApproximatelyEqualTo=this.nearlyEq,this.isEqualTo=this.eq,this.conj=this.conjugate,this.plus=this.add,this.subtract=this.sub,this.minus=this.sub,this.multiply=this.mult,this.times=this.mult,this.dividedBy=this.div,this.magnitude=this.abs,this.norm2=this.abs2,this.angle=this.arg,this.phase=this.arg}static from(e){return typeof e=="number"?new F(e,0):e}static real(e){return typeof e=="number"?e:e.real}static imag(e){return typeof e=="number"?0:e.imag}static polar(e,r){let[a,n]=this.cosAndSin(r);return new F(e*a,e*n)}static cosAndSin(e){let r=Math.PI/4,a=Math.round(e/r);if(a*r===e){let n=Math.sqrt(.5);return[[1,0],[n,n],[0,1],[-n,n],[-1,0],[-n,-n],[0,-1],[n,-n]][a&7]}return[Math.cos(e),Math.sin(e)]}eq(e){return typeof e=="number"?this.real===e&&this.imag===0:e instanceof F?this.real===e.real&&this.imag===e.imag:!1}nearlyEq(e,r){if(typeof e=="number"||e instanceof F){let a=this.sub(F.from(e));return Math.abs(a.real)<=r&&Math.abs(a.imag)<=r&&a.abs()<=r}return!1}conjugate(){return new F(this.real,-this.imag)}neg(){return new F(-this.real,-this.imag)}add(e){let r=F.from(e);return new F(this.real+r.real,this.imag+r.imag)}sub(e){let r=F.from(e);return new F(this.real-r.real,this.imag-r.imag)}mult(e){let r=F.from(e);return new F(this.real*r.real-this.imag*r.imag,this.real*r.imag+this.imag*r.real)}div(e){let r=F.from(e),a=r.abs2();if(a===0)return ne(Error("Division by Zero"));let n=this.mult(r.conjugate());return ae(new F(n.real/a,n.imag/a))}abs(){return Math.sqrt(this.abs2())}abs2(){return this.real*this.real+this.imag*this.imag}arg(){return Math.atan2(this.imag,this.real)}pow(e){return e===.5&&this.imag===0&&this.real>=0?new F(Math.sqrt(this.real),0):this.eq(F.ZERO)?F.ZERO:this.ln().mult(F.from(e)).exp()}exp(){return F.polar(Math.exp(this.real),this.imag)}format(e=qe){let r=new wa(e.allowAbbreviation===void 0?qe.allowAbbreviation:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits);return r.allowAbbreviation?this.toStringAllowSingleValue(r):this.toStringBothValues(r)}toString(){let e=new wa(qe.allowAbbreviation,qe.maxAbbreviationError,qe.fixedDigits);return this.toStringAllowSingleValue(e)}ln(){return new F(Math.log(this.abs()),this.arg())}toStringAllowSingleValue(e){if(this.canImagPartBeOmitted(e.maxAbbreviationError))return e.format(this.real);if(this.canRealPartBeOmitted(e.maxAbbreviationError)){let r;return this.isImagFactorCloseToOne(e.maxAbbreviationError)?r="":this.isImagFactorMinusOne(e.maxAbbreviationError)?r="-":r=e.format(this.imag),`${r}i`}return this.toStringBothValues(e)}toStringBothValues(e){let r=this.imag>=0?"+":"-",a=this.canImagFactorBeOmitted(e)?"":e.format(Math.abs(this.imag));return`${(e.allowAbbreviation||e.fixedDigits===void 0||this.real<0?"":"+")+e.format(this.real)+r+a}i`}canRealPartBeOmitted(e){return Math.abs(this.real)<=e}canImagPartBeOmitted(e){return Math.abs(this.imag)<=e}isImagFactorCloseToOne(e){return Math.abs(this.imag-1)<=e}isImagFactorMinusOne(e){return Math.abs(this.imag+1)<=e}canImagFactorBeOmitted(e){return e.allowAbbreviation&&Math.abs(Math.abs(this.imag)-1)<=e.maxAbbreviationError}};ke.ZERO=new ke(0,0),ke.ONE=new ke(1,0),ke.I=new ke(0,1);var du=c(()=>({message:"Parse Error"}),"P"),Ea=class Ma{static{c(this,"h")}static need(e,r,a){if(e!==!0){let n=a===void 0?"(not provided)":`[${Array.prototype.slice.call(a).join(", ")}]`,i=`Precondition failed +Args: ${n}`;throw new Error(i)}}static notNull(e){pr.need(e!=null,"notNull")}static get urlJson(){let e=new URL(location.href,window.location.origin),r=decodeURIComponent(e.pathname),a=r.lastIndexOf("/");return r.substring(a+1)}};hr.safeJsonParse=Ge.fromThrowable(JSON.parse,sn);var bt=hr,dn="Bloch",mn="\u2022",bn="H",gn="Measure",vn="P",yn="QFT\u2020",wn="QFT",xn="X^\xBD",En="Rx",Mn="Ry",Sn="Rz",On="S\u2020",An="S",Nn="\u2026",_n="Swap",In="T\u2020",$n="T",Tn="|0>",kn="|1>",Pn="X",Bn="Y",jn="Z",Dn={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0,itemSeparator:", "},K=class z{static{c(this,"c")}constructor(e,r,a){this.plus=this.add.bind(this),this.width=e,this.height=r,this.buffer=a,this.plus=this.add}static rows(e){let r=e.length;if(r===0)return R(Error("rows is empty"));let a=e[0].length;return e[0].length===0?R(Error("rows[0] is empty")):z.build(r,a,(n,i)=>e[n][i])}static column_vector(...e){return z.build(e.length,1,r=>e[r])}static build(e,r,a){let n=new Float64Array(r*e*2);for(let i=0;ie[a])._unsafeUnwrap()}static square(...e){let r=Math.round(Math.sqrt(e.length));return r*r!==e.length?R(Error("Matrix.square: non-square number of arguments")):z.build(r,r,(a,n)=>e[a*r+n])}static create(e,r,a){return e<0?R(Error(`width(${e}) < 0`)):r<0?R(Error(`height(${r}) < 0`)):e*r*2!==a.length?R(Error(`width(${e})*height(${r})*2 !== buffer.length(${a.length})`)):W(new z(e,r,a))}element(e,r){if(e<0||r<0||e>=this.width||r>=this.height)return R(Error("Element out of range"));let a=(this.width*r+e)*2;return W(new Y(this.buffer[a],this.buffer[a+1]))}set(e,r,a){if(e<0||r<0||e>=this.width||r>=this.height)return R(Error("Element out of range"));let n=(this.width*r+e)*2;return this.buffer[n]=a.real,this.buffer[n+1]=a.imag,W(this)}columnAt(e){if(e<0)return R(Error("colIndex < 0"));if(e>this.width)return R(Error("colIndex > this.width"));let r=[];for(let a=0;aze(0,this.width-1).map(r=>this.element(r,e)._unsafeUnwrap()))}isHermitian(e=0){if(this.width!==this.height)return!1;for(let r=0;re||Math.abs(this.buffer[n+1]+this.buffer[i+1])>e)return!1}return!0}trace(){let e=0,r=0,a=this.width*2+2;for(let n=0;nthis.buffer[a]===r.buffer[a])}nearlyEq(e,r){return e instanceof z&&this.width===e.width&&this.height===e.height&&Math.sqrt(this.sub(e)._unsafeUnwrap().norm2())<=r}format(e=Dn){let r=new Cn(e.allowAbbreviation===void 0?!0:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits,e.itemSeparator||", ");return`{{${this.rows().map(a=>a.map(n=>n.format(r)).join(r.itemSeparator)).join(`}${r.itemSeparator}{`)}}}`}toString(){return this.format()}qubitDensityMatrixToBlochVector(){if(this.width!==2||this.height!==2)throw new Be("Need a 2x2 density matrix.",this);if(!this.isHermitian(.01))throw new Be("Density matrix should be Hermitian.",this);if(!this.trace().nearlyEq(1,.01))throw new Be("Density matrix should have unit trace.",this);let[e,r,a,n,i,u,d,g]=this.buffer,f=i+a,v=u-n,b=e-d;return[f,v,b]}clone(){return new z(this.width,this.height,this.buffer.slice())}norm2(){let e=0;for(let r of this.buffer)e+=r*r;return e}multMatrix(e){if(this.width!==e.height)return R(Error("Incompatible sizes."));let r=e.width,a=this.height,n=this.width,i=new Float64Array(r*a*2);for(let u=0;u=2<u.tensorProduct(d))}qubitDensityMatrix(e){if(e<0||e>=this.nqubit)throw new Be("Qubit index out of range",e);let r=[...Array(Math.log2(this.matrix.height)).keys()].filter(i=>i!==e),a=c((i,u)=>u.sort().reverse().reduce((d,g)=>{let f=d>>g+1;f=f<(i>>b&1)===(u>>b&1)))continue;let d=this.matrix.element(0,u)._unsafeUnwrap().times(this.matrix.element(0,i)._unsafeUnwrap().conjugate());if(d.isEqualTo(0))continue;let g=a(u,r)===0?K.column_vector(1,0)._unsafeUnwrap():K.column_vector(0,1)._unsafeUnwrap(),f=a(i,r)===0?K.row(1,0):K.row(0,1),v=g.mult(f)._unsafeUnwrap();n=n.add(v.mult(d)._unsafeUnwrap())._unsafeUnwrap()}return n}};function Fn(t,e){return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}c(Fn,"Jc");var fr=class{static{c(this,"tc")}constructor(t){typeof t=="string"?this.state=new Rn(t):this.state=t,this.measuredBits={},this.flags={}}runStep(t){this.blochVectors={};for(let e of t)switch(e.type){case Tn:this.write(0,...e.targets);break;case kn:this.write(1,...e.targets);break;case dn:for(let r of e.targets)this.blochVectors[r]=this.state.blochVector(r);break;case bn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.ach(e.controls||[],e.antiControls||[],...e.targets):this.h(...e.targets);break;case Pn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acnot(e.controls||[],e.antiControls||[],...e.targets):this.x(...e.targets);break;case Bn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acy(e.controls||[],e.antiControls||[],...e.targets):this.y(...e.targets);break;case jn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acz(e.controls||[],e.antiControls||[],...e.targets):this.z(...e.targets);break;case Nn:break;case vn:{if(!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acphase(e.controls||[],e.antiControls||[],e.angle,e.targets[0]):this.cphase(e.targets.slice(1),e.angle,e.targets[0]);break}case An:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acs(e.controls||[],e.antiControls||[],...e.targets):this.s(...e.targets);break}case On:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acsDagger(e.controls||[],e.antiControls||[],...e.targets):this.sDagger(...e.targets);break}case $n:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.act(e.controls||[],e.antiControls||[],...e.targets):this.t(...e.targets);break}case In:{if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.actDagger(e.controls||[],e.antiControls||[],...e.targets):this.tDagger(...e.targets);break}case wn:this.qft(e.span,...e.targets);break;case yn:this.qftDagger(e.span,...e.targets);break;case mn:{this.cz(e.targets.slice(1),e.targets[0]);break}case _n:{e.controls&&e.controls.length===1?this.cswap(e.controls[0],e.targets[0],e.targets[1]):this.swap(e.targets[0],e.targets[1]);break}case xn:if(e.if&&!this.flags[e.if])break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrnot(e.controls||[],e.antiControls||[],...e.targets):this.rnot(...e.targets);break;case En:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrx(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.rx(e.angle,...e.targets);break;case Mn:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acry(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.ry(e.angle,...e.targets);break;case Sn:if(e.if&&!this.flags[e.if]||!e.angle)break;e.controls&&e.controls.length>0||e.antiControls&&e.antiControls.length>0?this.acrz(e.controls||[],e.antiControls||[],e.angle,...e.targets):this.rz(e.angle,...e.targets);break;case gn:for(let r of e.targets)this.measure(r),e.flag&&(this.flags[e.flag]=this.measuredBits[r]===1);break;default:throw new Error("Unknown instruction")}return this}write(t,...e){for(let r of e){let a=Fn(this.pZero(r),5);(t===0&&a===0||t===1&&a===1)&&this.x(r)}return this}h(...t){return this.u(gt,...t),this}ch(t,...e){return this.cu(t,gt,...e),this}ach(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,gt,...r),this.x(...e),this}x(...t){return this.u(vt,...t),this}cnot(t,...e){return this.cu(t,vt,...e),this}acnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,vt,...r),this.x(...e),this}y(...t){return this.u(yt,...t),this}cy(t,...e){return this.cu(t,yt,...e),this}acy(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,yt,...r),this.x(...e),this}z(...t){return this.u(wt,...t),this}cz(t,...e){return this.cu(t,wt,...e),this}acz(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,wt,...r),this.x(...e),this}phase(t,...e){return this.u(xt(t),...e),this}cphase(t,e,...r){return this.cu(t,xt(e),...r),this}acphase(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,xt(r),...a),this.x(...e),this}s(...t){return this.u(Nt,...t),this}acs(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Nt,...r),this.x(...e),this}sDagger(...t){return this.u(tr,...t),this}acsDagger(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,tr,...r),this.x(...e),this}t(...t){return this.u(We,...t),this}ct(t,...e){return this.cu(t,We,...e),this}act(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,We,...r),this.x(...e),this}tDagger(...t){return this.u(rr,...t),this}actDagger(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,rr,...r),this.x(...e),this}swap(t,e){return this.cnot(t,e).cnot(e,t).cnot(t,e),this}cswap(t,e,r){return this.cnot([t,e],r).cnot([t,r],e).cnot([t,e],r),this}rnot(...t){return this.u(Et,...t),this}crnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Et,...r),this.x(...e),this}acrnot(t,e,...r){let a;return typeof t=="number"?a=[t].concat(e):a=t.concat(e),this.x(...e),this.cu(a,Et,...r),this.x(...e),this}rx(t,...e){return this.u(Mt(t),...e),this}acrx(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,Mt(r),...a),this.x(...e),this}crx(t,e,...r){return this.cu(t,Mt(e),...r),this}ry(t,...e){return this.u(St(t),...e),this}cry(t,e,...r){return this.cu(t,St(e),...r),this}acry(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,St(r),...a),this.x(...e),this}rz(t,...e){return this.u(Ot(t),...e),this}crz(t,e,...r){return this.cu(t,Ot(e),...r),this}acrz(t,e,r,...a){let n;return typeof t=="number"?n=[t].concat(e):n=t.concat(e),this.x(...e),this.cu(n,Ot(r),...a),this.x(...e),this}qft(t,...e){for(let r of e)this.qftSingleTargetBit(t,r);return this}qftSingleTargetBit(t,e){switch(t){case 1:{this.h(e);break}case 2:{this.swap(e,e+1).h(e).cphase(e+1,"\u03C0/2",e).h(e+1);break}case 3:{this.swap(e,e+2).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).h(e+2);break}case 4:{this.swap(e,e+3).swap(e+1,e+2).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).h(e+3);break}case 5:{this.swap(e,e+4).swap(e+1,e+3).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).h(e+4);break}case 6:{this.swap(e,e+5).swap(e+1,e+4).swap(e+2,e+3).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).h(e+5);break}case 7:{this.swap(e,e+6).swap(e+1,e+5).swap(e+2,e+4).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).h(e+6);break}case 8:{this.swap(e,e+7).swap(e+1,e+6).swap(e+2,e+5).swap(e+3,e+4).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).h(e+7);break}case 9:{this.swap(e,e+8).swap(e+1,e+7).swap(e+2,e+6).swap(e+3,e+5).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).h(e+8);break}case 10:{this.swap(e,e+9).swap(e+1,e+8).swap(e+2,e+7).swap(e+3,e+6).swap(e+4,e+5).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).h(e+9);break}case 11:{this.swap(e,e+10).swap(e+1,e+9).swap(e+2,e+8).swap(e+3,e+7).swap(e+4,e+6).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).h(e+10);break}case 12:{this.swap(e,e+11).swap(e+1,e+10).swap(e+2,e+9).swap(e+3,e+8).swap(e+4,e+7).swap(e+5,e+6).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).h(e+11);break}case 13:{this.swap(e,e+12).swap(e+1,e+11).swap(e+2,e+10).swap(e+3,e+9).swap(e+4,e+8).swap(e+5,e+7).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).h(e+12);break}case 14:{this.swap(e,e+13).swap(e+1,e+12).swap(e+2,e+11).swap(e+3,e+10).swap(e+4,e+9).swap(e+5,e+8).swap(e+6,e+7).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).h(e+13);break}case 15:{this.swap(e,e+14).swap(e+1,e+13).swap(e+2,e+12).swap(e+3,e+11).swap(e+4,e+10).swap(e+5,e+9).swap(e+6,e+8).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).cphase(e+14,"\u03C0/16384",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).cphase(e+14,"\u03C0/8192",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).cphase(e+14,"\u03C0/4096",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).cphase(e+14,"\u03C0/2048",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).cphase(e+14,"\u03C0/1024",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).cphase(e+14,"\u03C0/512",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).cphase(e+14,"\u03C0/256",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).cphase(e+14,"\u03C0/128",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).cphase(e+14,"\u03C0/64",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).cphase(e+14,"\u03C0/32",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).cphase(e+14,"\u03C0/16",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).cphase(e+15,"\u03C0/8",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).cphase(e+15,"\u03C0/4",e+11).h(e+13).cphase(e+15,"\u03C0/2",e+12).h(e+14);break}case 16:{this.swap(e,e+15).swap(e+1,e+14).swap(e+2,e+13).swap(e+3,e+12).swap(e+4,e+11).swap(e+5,e+10).swap(e+6,e+9).swap(e+7,e+8).h(e).cphase(e+1,"\u03C0/2",e).cphase(e+2,"\u03C0/4",e).cphase(e+3,"\u03C0/8",e).cphase(e+4,"\u03C0/16",e).cphase(e+5,"\u03C0/32",e).cphase(e+6,"\u03C0/64",e).cphase(e+7,"\u03C0/128",e).cphase(e+8,"\u03C0/256",e).cphase(e+9,"\u03C0/512",e).cphase(e+10,"\u03C0/1024",e).cphase(e+11,"\u03C0/2048",e).cphase(e+12,"\u03C0/4096",e).cphase(e+13,"\u03C0/8192",e).cphase(e+14,"\u03C0/16384",e).cphase(e+15,"\u03C0/32768",e).h(e+1).cphase(e+2,"\u03C0/2",e+1).cphase(e+3,"\u03C0/4",e+1).cphase(e+4,"\u03C0/8",e+1).cphase(e+5,"\u03C0/16",e+1).cphase(e+6,"\u03C0/32",e+1).cphase(e+7,"\u03C0/64",e+1).cphase(e+8,"\u03C0/128",e+1).cphase(e+9,"\u03C0/256",e+1).cphase(e+10,"\u03C0/512",e+1).cphase(e+11,"\u03C0/1024",e+1).cphase(e+12,"\u03C0/2048",e+1).cphase(e+13,"\u03C0/4096",e+1).cphase(e+14,"\u03C0/8192",e+1).cphase(e+15,"\u03C0/16384",e+1).h(e+2).cphase(e+3,"\u03C0/2",e+2).cphase(e+4,"\u03C0/4",e+2).cphase(e+5,"\u03C0/8",e+2).cphase(e+6,"\u03C0/16",e+2).cphase(e+7,"\u03C0/32",e+2).cphase(e+8,"\u03C0/64",e+2).cphase(e+9,"\u03C0/128",e+2).cphase(e+10,"\u03C0/256",e+2).cphase(e+11,"\u03C0/512",e+2).cphase(e+12,"\u03C0/1024",e+2).cphase(e+13,"\u03C0/2048",e+2).cphase(e+14,"\u03C0/4096",e+2).cphase(e+15,"\u03C0/8192",e+2).h(e+3).cphase(e+4,"\u03C0/2",e+3).cphase(e+5,"\u03C0/4",e+3).cphase(e+6,"\u03C0/8",e+3).cphase(e+7,"\u03C0/16",e+3).cphase(e+8,"\u03C0/32",e+3).cphase(e+9,"\u03C0/64",e+3).cphase(e+10,"\u03C0/128",e+3).cphase(e+11,"\u03C0/256",e+3).cphase(e+12,"\u03C0/512",e+3).cphase(e+13,"\u03C0/1024",e+3).cphase(e+14,"\u03C0/2048",e+3).cphase(e+15,"\u03C0/4096",e+3).h(e+4).cphase(e+5,"\u03C0/2",e+4).cphase(e+6,"\u03C0/4",e+4).cphase(e+7,"\u03C0/8",e+4).cphase(e+8,"\u03C0/16",e+4).cphase(e+9,"\u03C0/32",e+4).cphase(e+10,"\u03C0/64",e+4).cphase(e+11,"\u03C0/128",e+4).cphase(e+12,"\u03C0/256",e+4).cphase(e+13,"\u03C0/512",e+4).cphase(e+14,"\u03C0/1024",e+4).cphase(e+15,"\u03C0/2048",e+4).h(e+5).cphase(e+6,"\u03C0/2",e+5).cphase(e+7,"\u03C0/4",e+5).cphase(e+8,"\u03C0/8",e+5).cphase(e+9,"\u03C0/16",e+5).cphase(e+10,"\u03C0/32",e+5).cphase(e+11,"\u03C0/64",e+5).cphase(e+12,"\u03C0/128",e+5).cphase(e+13,"\u03C0/256",e+5).cphase(e+14,"\u03C0/512",e+5).cphase(e+15,"\u03C0/1024",e+5).h(e+6).cphase(e+7,"\u03C0/2",e+6).cphase(e+8,"\u03C0/4",e+6).cphase(e+9,"\u03C0/8",e+6).cphase(e+10,"\u03C0/16",e+6).cphase(e+11,"\u03C0/32",e+6).cphase(e+12,"\u03C0/64",e+6).cphase(e+13,"\u03C0/128",e+6).cphase(e+14,"\u03C0/256",e+6).cphase(e+15,"\u03C0/512",e+6).h(e+7).cphase(e+8,"\u03C0/2",e+7).cphase(e+9,"\u03C0/4",e+7).cphase(e+10,"\u03C0/8",e+7).cphase(e+11,"\u03C0/16",e+7).cphase(e+12,"\u03C0/32",e+7).cphase(e+13,"\u03C0/64",e+7).cphase(e+14,"\u03C0/128",e+7).cphase(e+15,"\u03C0/256",e+7).h(e+8).cphase(e+9,"\u03C0/2",e+8).cphase(e+10,"\u03C0/4",e+8).cphase(e+11,"\u03C0/8",e+8).cphase(e+12,"\u03C0/16",e+8).cphase(e+13,"\u03C0/32",e+8).cphase(e+14,"\u03C0/64",e+8).cphase(e+15,"\u03C0/128",e+8).h(e+9).cphase(e+10,"\u03C0/2",e+8).cphase(e+11,"\u03C0/4",e+8).cphase(e+12,"\u03C0/8",e+8).cphase(e+13,"\u03C0/16",e+8).cphase(e+14,"\u03C0/32",e+8).cphase(e+15,"\u03C0/64",e+8).h(e+10).cphase(e+11,"\u03C0/2",e+9).cphase(e+12,"\u03C0/4",e+9).cphase(e+13,"\u03C0/8",e+9).cphase(e+14,"\u03C0/16",e+9).cphase(e+15,"\u03C0/32",e+9).h(e+11).cphase(e+13,"\u03C0/2",e+10).cphase(e+14,"\u03C0/4",e+10).cphase(e+15,"\u03C0/8",e+10).cphase(e+16,"\u03C0/16",e+10).h(e+12).cphase(e+14,"\u03C0/2",e+11).cphase(e+15,"\u03C0/4",e+11).cphase(e+16,"\u03C0/8",e+11).h(e+13).cphase(e+15,"\u03C0/2",e+12).cphase(e+16,"\u03C0/4",e+12).h(e+14).cphase(e+16,"\u03C0/2",e+13).h(e+15);break}default:throw new Error(`Invalid span: ${t}`)}return this}qftDagger(t,...e){for(let r of e)this.qftDaggerSingleTargetBit(t,r);return this}qftDaggerSingleTargetBit(t,e){switch(t){case 1:{this.h(e);break}case 2:{this.h(e+1).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+1);break}case 3:{this.h(e+2).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+2);break}case 4:{this.h(e+3).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+3).swap(e+1,e+2);break}case 5:{this.h(e+4).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+4).swap(e+1,e+3);break}case 6:{this.h(e+5).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+5).swap(e+1,e+4).swap(e+2,e+3);break}case 7:{this.h(e+6).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+6).swap(e+1,e+5).swap(e+2,e+4);break}case 8:{this.h(e+7).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+7).swap(e+1,e+6).swap(e+2,e+5).swap(e+3,e+4);break}case 9:{this.h(e+8).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+8).swap(e+1,e+7).swap(e+2,e+6).swap(e+3,e+5);break}case 10:{this.h(e+9).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+9).swap(e+1,e+8).swap(e+2,e+7).swap(e+3,e+6).swap(e+4,e+5);break}case 11:{this.h(e+10).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+10).swap(e+1,e+9).swap(e+2,e+8).swap(e+3,e+7).swap(e+4,e+6);break}case 12:{this.h(e+11).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+11).swap(e+1,e+10).swap(e+2,e+9).swap(e+3,e+8).swap(e+4,e+7).swap(e+5,e+6);break}case 13:{this.h(e+12).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+12).swap(e+1,e+11).swap(e+2,e+10).swap(e+3,e+9).swap(e+4,e+8).swap(e+5,e+7);break}case 14:{this.h(e+13).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e).h(e+10).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+13).swap(e+1,e+12).swap(e+2,e+11).swap(e+3,e+10).swap(e+4,e+9).swap(e+5,e+8).swap(e+6,e+7);break}case 15:{this.h(e+14).cphase(e+14,"-\u03C0/2",e+13).h(e+13).cphase(e+14,"-\u03C0/4",e+12).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+14,"-\u03C0/8",e+11).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+14,"-\u03C0/16",e+10).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+14,"-\u03C0/32",e+9).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+14,"-\u03C0/64",e+8).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+14,"-\u03C0/128",e+7).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+14,"-\u03C0/256",e+6).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+14,"-\u03C0/512",e+5).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+14,"-\u03C0/1024",e+4).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+14,"-\u03C0/2048",e+3).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+14,"-\u03C0/4096",e+2).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+14,"-\u03C0/8192",e+1).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+14,"-\u03C0/16384",e).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e,e+14).swap(e+1,e+13).swap(e+2,e+12).swap(e+3,e+11).swap(e+4,e+10).swap(e+5,e+9).swap(e+6,e+8);break}case 16:{this.h(e+15).cphase(e+15,"-\u03C0/2",e+14).h(e+14).cphase(e+15,"-\u03C0/4",e+13).cphase(e+14,"-\u03C0/4",e+13).h(e+13).cphase(e+15,"-\u03C0/8",e+12).cphase(e+14,"-\u03C0/4",e+12).cphase(e+13,"-\u03C0/2",e+12).h(e+12).cphase(e+15,"-\u03C0/16",e+11).cphase(e+14,"-\u03C0/8",e+11).cphase(e+13,"-\u03C0/4",e+11).cphase(e+12,"-\u03C0/2",e+11).h(e+11).cphase(e+15,"-\u03C0/32",e+10).cphase(e+14,"-\u03C0/16",e+10).cphase(e+13,"-\u03C0/8",e+10).cphase(e+12,"-\u03C0/4",e+10).cphase(e+11,"-\u03C0/2",e+10).h(e+10).cphase(e+15,"-\u03C0/64",e+9).cphase(e+14,"-\u03C0/32",e+9).cphase(e+13,"-\u03C0/16",e+9).cphase(e+12,"-\u03C0/8",e+9).cphase(e+11,"-\u03C0/4",e+9).cphase(e+10,"-\u03C0/2",e+9).h(e+9).cphase(e+15,"-\u03C0/128",e+8).cphase(e+14,"-\u03C0/64",e+8).cphase(e+13,"-\u03C0/32",e+8).cphase(e+12,"-\u03C0/16",e+8).cphase(e+11,"-\u03C0/8",e+8).cphase(e+10,"-\u03C0/4",e+8).cphase(e+9,"-\u03C0/2",e+8).h(e+8).cphase(e+15,"-\u03C0/256",e+7).cphase(e+14,"-\u03C0/128",e+7).cphase(e+13,"-\u03C0/64",e+7).cphase(e+12,"-\u03C0/32",e+7).cphase(e+11,"-\u03C0/16",e+7).cphase(e+10,"-\u03C0/8",e+7).cphase(e+9,"-\u03C0/4",e+7).cphase(e+8,"-\u03C0/2",e+7).h(e+7).cphase(e+15,"-\u03C0/512",e+6).cphase(e+14,"-\u03C0/256",e+6).cphase(e+13,"-\u03C0/128",e+6).cphase(e+12,"-\u03C0/64",e+6).cphase(e+11,"-\u03C0/32",e+6).cphase(e+10,"-\u03C0/16",e+6).cphase(e+9,"-\u03C0/8",e+6).cphase(e+8,"-\u03C0/4",e+6).cphase(e+7,"-\u03C0/2",e+6).h(e+6).cphase(e+15,"-\u03C0/1024",e+5).cphase(e+14,"-\u03C0/512",e+5).cphase(e+13,"-\u03C0/256",e+5).cphase(e+12,"-\u03C0/128",e+5).cphase(e+11,"-\u03C0/64",e+5).cphase(e+10,"-\u03C0/32",e+5).cphase(e+9,"-\u03C0/16",e+5).cphase(e+8,"-\u03C0/8",e+5).cphase(e+7,"-\u03C0/4",e+5).cphase(e+6,"-\u03C0/2",e+5).h(e+5).cphase(e+15,"-\u03C0/2048",e+4).cphase(e+14,"-\u03C0/1024",e+4).cphase(e+13,"-\u03C0/512",e+4).cphase(e+12,"-\u03C0/256",e+4).cphase(e+11,"-\u03C0/128",e+4).cphase(e+10,"-\u03C0/64",e+4).cphase(e+9,"-\u03C0/32",e+4).cphase(e+8,"-\u03C0/16",e+4).cphase(e+7,"-\u03C0/8",e+4).cphase(e+6,"-\u03C0/4",e+4).cphase(e+5,"-\u03C0/2",e+4).h(e+4).cphase(e+15,"-\u03C0/4096",e+3).cphase(e+14,"-\u03C0/2048",e+3).cphase(e+13,"-\u03C0/1024",e+3).cphase(e+12,"-\u03C0/512",e+3).cphase(e+11,"-\u03C0/256",e+3).cphase(e+10,"-\u03C0/128",e+3).cphase(e+9,"-\u03C0/64",e+3).cphase(e+8,"-\u03C0/32",e+3).cphase(e+7,"-\u03C0/16",e+3).cphase(e+6,"-\u03C0/8",e+3).cphase(e+5,"-\u03C0/4",e+3).cphase(e+4,"-\u03C0/2",e+3).h(e+3).cphase(e+15,"-\u03C0/8192",e+2).cphase(e+14,"-\u03C0/4096",e+2).cphase(e+13,"-\u03C0/2048",e+2).cphase(e+12,"-\u03C0/1024",e+2).cphase(e+11,"-\u03C0/512",e+2).cphase(e+10,"-\u03C0/256",e+2).cphase(e+9,"-\u03C0/128",e+2).cphase(e+8,"-\u03C0/64",e+2).cphase(e+7,"-\u03C0/32",e+2).cphase(e+6,"-\u03C0/16",e+2).cphase(e+5,"-\u03C0/8",e+2).cphase(e+4,"-\u03C0/4",e+2).cphase(e+3,"-\u03C0/2",e+2).h(e+2).cphase(e+15,"-\u03C0/16384",e+1).cphase(e+14,"-\u03C0/8192",e+1).cphase(e+13,"-\u03C0/4096",e+1).cphase(e+12,"-\u03C0/2048",e+1).cphase(e+11,"-\u03C0/1024",e+1).cphase(e+10,"-\u03C0/512",e+1).cphase(e+9,"-\u03C0/256",e+1).cphase(e+8,"-\u03C0/128",e+1).cphase(e+7,"-\u03C0/64",e+1).cphase(e+6,"-\u03C0/32",e+1).cphase(e+5,"-\u03C0/16",e+1).cphase(e+4,"-\u03C0/8",e+1).cphase(e+3,"-\u03C0/4",e+1).cphase(e+2,"-\u03C0/2",e+1).h(e+1).cphase(e+15,"-\u03C0/32768",e).cphase(e+14,"-\u03C0/16384",e).cphase(e+13,"-\u03C0/8192",e).cphase(e+12,"-\u03C0/4096",e).cphase(e+11,"-\u03C0/2048",e).cphase(e+10,"-\u03C0/1024",e).cphase(e+9,"-\u03C0/512",e).cphase(e+8,"-\u03C0/256",e).cphase(e+7,"-\u03C0/128",e).cphase(e+6,"-\u03C0/64",e).cphase(e+5,"-\u03C0/32",e).cphase(e+4,"-\u03C0/16",e).cphase(e+3,"-\u03C0/8",e).cphase(e+2,"-\u03C0/4",e).cphase(e+1,"-\u03C0/2",e).h(e).swap(e+1,e+15).swap(e+2,e+14).swap(e+3,e+13).swap(e+4,e+12).swap(e+5,e+11).swap(e+6,e+10).swap(e+7,e+9).swap(e+8,e+8).swap(e+9,e+7).swap(e+10,e+6);break}default:throw new Error(`Invalid span: ${t}`)}return this}measure(...t){for(let e of t){let r=this.pZero(e);if(Math.random()<=r){for(let a=0;a<1<n|1<0&&i[i.length-1])&&(f[0]===6||f[0]===2)){r=0;continue}if(f[0]===3&&(!i||f[1]>i[0]&&f[1]0)&&!(n=a.next()).done;)i.push(n.value)}catch(d){u={error:d}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(u)throw u.error}}return i}c(Ke,"__read");function Ee(t,e,r){if(r||arguments.length===2)for(var a=0,n=e.length,i;an.character===e);if(r!==void 0)return r.value;let a=parseFloat(e);if(isNaN(a))throw new Error(`Not a number: '${e}'`);return a}static simplifyByRounding(e,r){if(e<0)return-ue.simplifyByRounding(-e,r);let a=e%1;if(a<=r||1-a<=r)return Math.round(e);let n=ue.matchUnicodeFraction(u=>Math.abs(u.value-e)<=r);if(n!==void 0)return n.value;let i=ue.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?Math.sqrt(i.value):e}static matchUnicodeFraction(e){for(let r of xa)if(e(r))return r}constructor(e,r,a,n){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}formatFloat(e){return this.allowAbbreviation?this.abbreviateFloat(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateFloat(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=ue.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}};de.CONSISTENT=new de(!1,0,2,", "),de.EXACT=new de(!0,0,void 0,", "),de.MINIFIED=new de(!0,0,void 0,","),de.SIMPLIFIED=new de(!0,5e-4,3,", ");var wa=class zt{static{c(this,"r")}static matchUnicodeFraction(e){for(let r of xa)if(e(r))return r}constructor(e,r,a,n=", "){this.allowAbbreviation=e,this.maxAbbreviationError=r,this.fixedDigits=a,this.itemSeparator=n}format(e){return this.allowAbbreviation?this.abbreviateNumber(e,this.maxAbbreviationError,this.fixedDigits):this.fixedDigits!==void 0?e.toFixed(this.fixedDigits):String(e)}abbreviateNumber(e,r=0,a=void 0){if(Math.abs(e)Math.abs(u.value-e)<=r);if(n!==void 0)return n.character;let i=zt.matchUnicodeFraction(u=>Math.abs(Math.sqrt(u.value)-e)<=r);return i!==void 0?`\u221A${i.character}`:e%1!==0&&a!==void 0?e.toFixed(a):e.toString()}},qe={allowAbbreviation:!0,maxAbbreviationError:0,fixedDigits:void 0},ke=class F{static{c(this,"a")}constructor(e,r){this.isEqualTo=this.eq.bind(this),this.isApproximatelyEqualTo=this.nearlyEq.bind(this),this.conj=this.conjugate.bind(this),this.plus=this.add.bind(this),this.subtract=this.sub.bind(this),this.minus=this.sub.bind(this),this.multiply=this.mult.bind(this),this.times=this.mult.bind(this),this.dividedBy=this.div.bind(this),this.magnitude=this.abs.bind(this),this.norm2=this.abs2.bind(this),this.angle=this.arg.bind(this),this.phase=this.arg.bind(this),this.real=e,this.imag=r,this.isApproximatelyEqualTo=this.nearlyEq,this.isEqualTo=this.eq,this.conj=this.conjugate,this.plus=this.add,this.subtract=this.sub,this.minus=this.sub,this.multiply=this.mult,this.times=this.mult,this.dividedBy=this.div,this.magnitude=this.abs,this.norm2=this.abs2,this.angle=this.arg,this.phase=this.arg}static from(e){return typeof e=="number"?new F(e,0):e}static real(e){return typeof e=="number"?e:e.real}static imag(e){return typeof e=="number"?0:e.imag}static polar(e,r){let[a,n]=this.cosAndSin(r);return new F(e*a,e*n)}static cosAndSin(e){let r=Math.PI/4,a=Math.round(e/r);if(a*r===e){let n=Math.sqrt(.5);return[[1,0],[n,n],[0,1],[-n,n],[-1,0],[-n,-n],[0,-1],[n,-n]][a&7]}return[Math.cos(e),Math.sin(e)]}eq(e){return typeof e=="number"?this.real===e&&this.imag===0:e instanceof F?this.real===e.real&&this.imag===e.imag:!1}nearlyEq(e,r){if(typeof e=="number"||e instanceof F){let a=this.sub(F.from(e));return Math.abs(a.real)<=r&&Math.abs(a.imag)<=r&&a.abs()<=r}return!1}conjugate(){return new F(this.real,-this.imag)}neg(){return new F(-this.real,-this.imag)}add(e){let r=F.from(e);return new F(this.real+r.real,this.imag+r.imag)}sub(e){let r=F.from(e);return new F(this.real-r.real,this.imag-r.imag)}mult(e){let r=F.from(e);return new F(this.real*r.real-this.imag*r.imag,this.real*r.imag+this.imag*r.real)}div(e){let r=F.from(e),a=r.abs2();if(a===0)return ne(Error("Division by Zero"));let n=this.mult(r.conjugate());return ae(new F(n.real/a,n.imag/a))}abs(){return Math.sqrt(this.abs2())}abs2(){return this.real*this.real+this.imag*this.imag}arg(){return Math.atan2(this.imag,this.real)}pow(e){return e===.5&&this.imag===0&&this.real>=0?new F(Math.sqrt(this.real),0):this.eq(F.ZERO)?F.ZERO:this.ln().mult(F.from(e)).exp()}exp(){return F.polar(Math.exp(this.real),this.imag)}format(e=qe){let r=new wa(e.allowAbbreviation===void 0?qe.allowAbbreviation:e.allowAbbreviation,e.maxAbbreviationError||0,e.fixedDigits);return r.allowAbbreviation?this.toStringAllowSingleValue(r):this.toStringBothValues(r)}toString(){let e=new wa(qe.allowAbbreviation,qe.maxAbbreviationError,qe.fixedDigits);return this.toStringAllowSingleValue(e)}ln(){return new F(Math.log(this.abs()),this.arg())}toStringAllowSingleValue(e){if(this.canImagPartBeOmitted(e.maxAbbreviationError))return e.format(this.real);if(this.canRealPartBeOmitted(e.maxAbbreviationError)){let r;return this.isImagFactorCloseToOne(e.maxAbbreviationError)?r="":this.isImagFactorMinusOne(e.maxAbbreviationError)?r="-":r=e.format(this.imag),`${r}i`}return this.toStringBothValues(e)}toStringBothValues(e){let r=this.imag>=0?"+":"-",a=this.canImagFactorBeOmitted(e)?"":e.format(Math.abs(this.imag));return`${(e.allowAbbreviation||e.fixedDigits===void 0||this.real<0?"":"+")+e.format(this.real)+r+a}i`}canRealPartBeOmitted(e){return Math.abs(this.real)<=e}canImagPartBeOmitted(e){return Math.abs(this.imag)<=e}isImagFactorCloseToOne(e){return Math.abs(this.imag-1)<=e}isImagFactorMinusOne(e){return Math.abs(this.imag+1)<=e}canImagFactorBeOmitted(e){return e.allowAbbreviation&&Math.abs(Math.abs(this.imag)-1)<=e.maxAbbreviationError}};ke.ZERO=new ke(0,0),ke.ONE=new ke(1,0),ke.I=new ke(0,1);var du=c(()=>({message:"Parse Error"}),"P"),Ea=class Ma{static{c(this,"h")}static need(e,r,a){if(e!==!0){let n=a===void 0?"(not provided)":`[${Array.prototype.slice.call(a).join(", ")}]`,i=`Precondition failed Message: ${r===void 0?"(not provided)":r} diff --git a/apps/tutorial/serviceworker.js.map b/apps/tutorial/serviceworker.js.map index 311216cac..e2eecffe2 100644 --- a/apps/tutorial/serviceworker.js.map +++ b/apps/tutorial/serviceworker.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../node_modules/fraction.js/fraction.js", "../../node_modules/pretty-format/node_modules/ansi-styles/index.js", "../../node_modules/pretty-format/build/collections.js", "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../node_modules/pretty-format/build/plugins/Immutable.js", "../../node_modules/react-is/cjs/react-is.production.min.js", "../../node_modules/react-is/index.js", "../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../node_modules/pretty-format/build/index.js", "../../node_modules/fp-ts/es6/NonEmptyArray.js", "../../node_modules/fraction.js/fraction.js", "../../node_modules/pretty-format/node_modules/ansi-styles/index.js", "../../node_modules/pretty-format/build/collections.js", "../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../node_modules/pretty-format/build/plugins/Immutable.js", "../../node_modules/react-is/cjs/react-is.production.min.js", "../../node_modules/react-is/index.js", "../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../node_modules/pretty-format/build/index.js", "../../packages/common/src/angle-parser.ts", "../../packages/common/src/format.ts", "../../packages/common/src/number-formatter.ts", "../../packages/common/src/complex.ts", "../../packages/common/src/config.ts", "../../packages/common/src/detailed-error.ts", "../../packages/common/src/emit-event.ts", "../../packages/common/src/equate.ts", "../../packages/common/src/numeric-range.ts", "../../packages/common/src/util.ts", "../../packages/common/src/anti-control-gate.ts", "../../packages/common/src/bloch-display.ts", "../../packages/common/src/control-gate.ts", "../../packages/common/src/h-gate.ts", "../../packages/common/src/measurement-gate.ts", "../../packages/common/src/phase-gate.ts", "../../packages/common/src/qft-dagger-gate.ts", "../../packages/common/src/qft-gate.ts", "../../packages/common/src/rnot-gate.ts", "../../packages/common/src/rx-gate.ts", "../../packages/common/src/ry-gate.ts", "../../packages/common/src/rz-gate.ts", "../../packages/common/src/s-dagger-gate.ts", "../../packages/common/src/s-gate.ts", "../../packages/common/src/spacer-gate.ts", "../../packages/common/src/swap-gate.ts", "../../packages/common/src/t-dagger-gate.ts", "../../packages/common/src/t-gate.ts", "../../packages/common/src/write-gate.ts", "../../packages/common/src/x-gate.ts", "../../packages/common/src/y-gate.ts", "../../packages/common/src/z-gate.ts", "../../node_modules/neverthrow/dist/index.es.js", "../../packages/simulator/src/matrix.ts", "../../packages/simulator/src/gate-matrices.ts", "../../packages/simulator/src/state-vector.ts", "../../packages/simulator/src/util.ts", "../../packages/simulator/src/simulator.ts", "../../packages/common/src/angle-parser.ts", "../../packages/common/src/format.ts", "../../packages/common/src/number-formatter.ts", "../../packages/common/src/complex.ts", "../../packages/common/src/config.ts", "../../packages/common/src/detailed-error.ts", "../../packages/common/src/emit-event.ts", "../../packages/common/src/equate.ts", "../../packages/common/src/numeric-range.ts", "../../packages/common/src/util.ts", "../../packages/common/src/anti-control-gate.ts", "../../packages/common/src/bloch-display.ts", "../../packages/common/src/control-gate.ts", "../../packages/common/src/h-gate.ts", "../../packages/common/src/measurement-gate.ts", "../../packages/common/src/phase-gate.ts", "../../packages/common/src/qft-dagger-gate.ts", "../../packages/common/src/qft-gate.ts", "../../packages/common/src/rnot-gate.ts", "../../packages/common/src/rx-gate.ts", "../../packages/common/src/ry-gate.ts", "../../packages/common/src/rz-gate.ts", "../../packages/common/src/s-dagger-gate.ts", "../../packages/common/src/s-gate.ts", "../../packages/common/src/spacer-gate.ts", "../../packages/common/src/swap-gate.ts", "../../packages/common/src/t-dagger-gate.ts", "../../packages/common/src/t-gate.ts", "../../packages/common/src/write-gate.ts", "../../packages/common/src/x-gate.ts", "../../packages/common/src/y-gate.ts", "../../packages/common/src/z-gate.ts", "../../node_modules/neverthrow/dist/index.es.js", "src/serviceworker.js"], - "sourcesContent": ["/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (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 {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : 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/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "var __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain';\nimport { identity, pipe } from './function';\nimport { bindTo as bindTo_, flap as flap_ } from './Functor';\nimport * as _ from './internal';\nimport { getMonoid } from './Ord';\nimport * as RNEA from './ReadonlyNonEmptyArray';\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexport var isNonEmpty = function (as) { return as.length > 0; };\n/**\n * @internal\n */\nexport var isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\n/**\n * @internal\n */\nexport var prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\n/**\n * @internal\n */\nexport var prepend = prependW;\n/**\n * @internal\n */\nexport var appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\n/**\n * @internal\n */\nexport var append = appendW;\n/**\n * @internal\n */\nexport var unsafeInsertAt = function (i, a, as) {\n if (isNonEmpty(as)) {\n var xs = fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\n/**\n * @internal\n */\nexport var unsafeUpdateAt = function (i, a, as) {\n var xs = fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n};\n/**\n * Remove duplicates from a `NonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return copy(as);\n }\n var out = [head(as)];\n var rest = tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\n/**\n * Sort the elements of a `NonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = NEA.sortBy([byName, byAge])\n *\n * const persons: NEA.NonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var sortBy = function (ords) {\n if (isNonEmpty(ords)) {\n var M = getMonoid();\n return sort(ords.reduce(M.concat, M.empty));\n }\n return copy;\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexport var union = function (E) {\n var uniqE = uniq(E);\n return function (second) { return function (first) { return uniqE(pipe(first, concat(second))); }; };\n};\n/**\n * Rotate a `NonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (isOutOfBound(Math.abs(m), as) || m === 0) {\n return copy(as);\n }\n if (m < 0) {\n var _a = splitAt(-m)(as), f = _a[0], s = _a[1];\n return pipe(s, concat(f));\n }\n else {\n return rotate(m - len)(as);\n }\n}; };\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nexport var fromReadonlyNonEmptyArray = _.fromReadonlyNonEmptyArray;\n/**\n * Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var fromArray = function (as) { return (isNonEmpty(as) ? _.some(as) : _.none); };\n/**\n * Return a `NonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\n/**\n * Create a `NonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var replicate = function (a) { return makeBy(function () { return a; }); };\n/**\n * Create a `NonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var range = function (start, end) {\n return start <= end ? makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3]), [1, [2, 3]])\n *\n * @category destructors\n * @since 2.9.0\n */\nexport var unprepend = function (as) { return [head(as), tail(as)]; };\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nexport var unappend = function (as) { return [init(as), last(as)]; };\nexport function concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexport function concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var reverse = function (as) { return __spreadArray([last(as)], as.slice(0, -1).reverse()); };\nexport function group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return [];\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.0.0\n */\nexport var groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var sort = function (O) { return function (as) {\n return as.slice().sort(O.compare);\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var updateAt = function (i, a) {\n return modifyAt(i, function () { return a; });\n};\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var modifyAt = function (i, f) { return function (as) {\n return isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var copy = fromReadonlyNonEmptyArray;\n/**\n * @category Pointed\n * @since 2.0.0\n */\nexport var of = function (a) { return [a]; };\n/**\n * @category combinators\n * @since 2.5.1\n */\nexport var zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexport function zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return zipWith(as, bs, function (a, b) { return [a, b]; });\n}\n/**\n * @category combinators\n * @since 2.5.1\n */\nexport var unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nexport var intersperse = function (middle) { return function (as) {\n var rest = tail(as);\n return isNonEmpty(rest) ? pipe(rest, prependAll(middle), prepend(head(as))) : copy(as);\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var foldMapWithIndex = RNEA.foldMapWithIndex;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var foldMap = RNEA.foldMap;\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chainWithIndex = function (f) { return function (as) {\n var out = fromReadonlyNonEmptyArray(f(0, head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\n/**\n * Splits a `NonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [copy(as), []] : [pipe(as.slice(1, m), prepend(head(as))), as.slice(m)];\n}; };\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chunksOf = function (n) { return chop(splitAt(n)); };\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return pipe(fa, mapWithIndex(f)); };\n/* istanbul ignore next */\nvar _ap = function (fab, fa) { return pipe(fab, ap(fa)); };\n/* istanbul ignore next */\nvar _chain = function (ma, f) { return pipe(ma, chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return pipe(wa, extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return pipe(fa, reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = foldMap(M);\n return function (fa, f) { return pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return pipe(fa, reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = traverse(F);\n return function (ta, f) { return pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return pipe(fa, alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return pipe(fa, reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = foldMapWithIndex(M);\n return function (fa, f) { return pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return pipe(fa, reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (ta, f) { return pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nexport var altW = function (that) { return function (as) {\n return pipe(as, concatW(that()));\n}; };\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexport var alt = altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\nexport var ap = function (as) {\n return chain(function (f) { return pipe(as, map(f)); });\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\nexport var chain = function (f) {\n return chainWithIndex(function (_, a) { return f(a); });\n};\n/**\n * @category Extend\n * @since 2.0.0\n */\nexport var extend = function (f) { return function (as) {\n var next = tail(as);\n var out = [f(as)];\n while (isNonEmpty(next)) {\n out.push(f(next));\n next = tail(next);\n }\n return out;\n}; };\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var duplicate = \n/*#__PURE__*/\nextend(identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var flatten = \n/*#__PURE__*/\nchain(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\nexport var map = function (f) { return mapWithIndex(function (_, a) { return f(a); }); };\n/**\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nexport var mapWithIndex = function (f) { return function (as) {\n var out = [f(0, head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexport var reduce = RNEA.reduce;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexport var reduceWithIndex = RNEA.reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexport var reduceRight = RNEA.reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexport var reduceRightWithIndex = RNEA.reduceRightWithIndex;\n/**\n * @since 2.6.3\n */\nexport var traverse = function (F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\n/**\n * @since 2.6.3\n */\nexport var sequence = function (F) { return traverseWithIndex(F)(function (_, a) { return a; }); };\n/**\n * @since 2.6.3\n */\nexport var traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, head(as)), of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return pipe(bs, append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\n/**\n * @since 2.7.0\n */\nexport var extract = RNEA.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var URI = 'NonEmptyArray';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var getShow = RNEA.getShow;\n/**\n * Builds a `Semigroup` instance for `NonEmptyArray`\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getSemigroup = function () { return ({\n concat: concat\n}); };\n/**\n * @example\n * import { getEq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getEq = RNEA.getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexport var getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var flap = \n/*#__PURE__*/\nflap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var FunctorWithIndex = {\n URI: URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Apply = {\n URI: URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var apFirst = \n/*#__PURE__*/\napFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var apSecond = \n/*#__PURE__*/\napSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Applicative = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var chainFirst = \n/*#__PURE__*/\nchainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Foldable = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var FoldableWithIndex = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Traversable = {\n URI: URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var TraversableWithIndex = {\n URI: URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alt = {\n URI: URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Comonad = {\n URI: URI,\n map: _map,\n extend: _extend,\n extract: extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexport var Do = \n/*#__PURE__*/\nof(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexport var bindTo = \n/*#__PURE__*/\nbindTo_(Functor);\n/**\n * @since 2.8.0\n */\nexport var bind = \n/*#__PURE__*/\nbind_(Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexport var apS = \n/*#__PURE__*/\napS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexport var head = RNEA.head;\n/**\n * @since 2.0.0\n */\nexport var tail = function (as) { return as.slice(1); };\n/**\n * @since 2.0.0\n */\nexport var last = RNEA.last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.2.0\n */\nexport var init = function (as) { return as.slice(0, -1); };\n/**\n * @since 2.0.0\n */\nexport var min = RNEA.min;\n/**\n * @since 2.0.0\n */\nexport var max = RNEA.max;\n/**\n * @since 2.10.0\n */\nexport var concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\n/**\n * Break an `Array` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nexport var matchLeft = function (f) { return function (as) { return f(head(as), tail(as)); }; };\n/**\n * Break an `Array` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nexport var matchRight = function (f) { return function (as) {\n return f(init(as), last(as));\n}; };\n/**\n * Apply a function to the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport var modifyHead = function (f) { return function (as) { return __spreadArray([\n f(head(as))\n], tail(as)); }; };\n/**\n * Change the head, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var updateHead = function (a) { return modifyHead(function () { return a; }); };\n/**\n * Apply a function to the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport var modifyLast = function (f) { return function (as) {\n return pipe(init(as), append(f(last(as))));\n}; };\n/**\n * Change the last element, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var updateLast = function (a) { return modifyLast(function () { return a; }); };\nexport function groupSort(O) {\n var sortO = sort(O);\n var groupO = group(O);\n return function (as) { return (isNonEmpty(as) ? groupO(sortO(as)) : []); };\n}\nexport function filter(predicate) {\n return filterWithIndex(function (_, a) { return predicate(a); });\n}\n/**\n * Use [`filterWithIndex`](./Array.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexport var filterWithIndex = function (predicate) { return function (as) { return fromArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexport var uncons = unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexport var unsnoc = unappend;\nexport function cons(head, tail) {\n return tail === undefined ? prepend(head) : pipe(tail, prepend(head));\n}\n/**\n * Use [`append`](./Array.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexport var snoc = function (init, end) { return pipe(init, append(end)); };\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexport var prependToAll = prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexport var fold = RNEA.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexport var nonEmptyArray = {\n URI: URI,\n of: of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (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 {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : 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/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\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\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import {Complex, DetailedError, Format} from '@qni/common'\nimport {range} from 'fp-ts/NonEmptyArray'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n itemSeparator?: string\n}\n\nconst DEFAULT_FORMAT_OPTIONS: FormatOptions = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n itemSeparator: ', ',\n}\n\nexport class Matrix {\n public width: number\n public height: number\n public buffer: Float64Array\n\n /**\n * Creates a new Matrix object from the given rows.\n */\n static rows(rows: Array>): Result {\n const height = rows.length\n if (height === 0) {\n return err(Error('rows is empty'))\n }\n const width = rows[0].length\n if (rows[0].length === 0) {\n return err(Error('rows[0] is empty'))\n }\n\n return Matrix.build(height, width, (row, col) => rows[row][col])\n }\n\n /**\n * Creates a column vector from the given elements.\n */\n static column_vector(...elements: Array): Result {\n return Matrix.build(elements.length, 1, row => elements[row])\n }\n\n /**\n * Builds a matrix with the specified width and height, using the provided\n * function to generate each element.\n */\n static build(\n height: number,\n width: number,\n matrixElementGenerator?: (row: number, col: number) => number | Complex,\n ): Result {\n const buf = new Float64Array(width * height * 2)\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const ri = (row * width + col) * 2 // real part index\n const ii = ri + 1 // imaginary part index\n\n let v: Complex\n if (matrixElementGenerator) {\n v = Complex.from(matrixElementGenerator(row, col))\n } else {\n v = Complex.from(0)\n }\n\n buf[ri] = v.real\n buf[ii] = v.imag\n }\n }\n\n return Matrix.create(width, height, buf)\n }\n\n /**\n * Return a row vector.\n *\n * @param elements - The elements of the vector\n * @returns A row vector (Matrix with 1 row)\n */\n static row(...elements: Array): Matrix {\n const res = Matrix.build(1, elements.length, (_row, col) => elements[col])\n return res._unsafeUnwrap()\n }\n\n /**\n * Returns an identity matrix of the specified size.\n *\n * @param size - The size of the identity matrix\n * @returns A result object with the generated identity matrix or an error\n */\n static identity(size: number): Result {\n const buf = new Float64Array(size * size * 2)\n for (let i = 0; i < size; i++) {\n buf[i * (size + 1) * 2] = 1\n }\n\n return Matrix.create(size, size, buf)\n }\n\n /**\n * Returns a square matrix with the specified elements.\n *\n * @param elements - The elements of the matrix\n * @returns A result object with the generated square matrix or an error\n */\n static square(...elements: Array): Result {\n const n = Math.round(Math.sqrt(elements.length))\n if (n * n !== elements.length) {\n return err(Error('Matrix.square: non-square number of arguments'))\n }\n\n return Matrix.build(n, n, (row, col) => elements[row * n + col])\n }\n\n /**\n * Returns a matrix of the specified `width` and `height`.\n *\n * @param width - The width of the matrix\n * @param height - The height of the matrix\n * @param buffer - The buffer containing the matrix elements\n */\n static create(width: number, height: number, buffer: Float64Array): Result {\n if (width < 0) {\n return err(Error(`width(${width}) < 0`))\n }\n if (height < 0) {\n return err(Error(`height(${height}) < 0`))\n }\n if (width * height * 2 !== buffer.length) {\n return err(Error(`width(${width})*height(${height})*2 !== buffer.length(${buffer.length})`))\n }\n\n return ok(new Matrix(width, height, buffer))\n }\n\n constructor(width: number, height: number, buffer: Float64Array) {\n this.width = width\n this.height = height\n this.buffer = buffer\n\n this.plus = this.add // alias for add\n }\n\n /**\n * Returns element (col,row) of the matrix.\n *\n * @param col - The column index\n * @param row - The row index\n * @returns A result object with the element or an error\n */\n element(col: number, row: number): Result {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n return err(Error('Element out of range'))\n }\n\n const i = (this.width * row + col) * 2\n return ok(new Complex(this.buffer[i], this.buffer[i + 1]))\n }\n\n /**\n * Sets element (col,row) of the matrix.\n *\n * @param col - The column index\n * @param row - The row index\n * @param value - The value to set\n * @returns A result object with the matrix or an error\n */\n set(col: number, row: number, value: Complex): Result {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n return err(Error('Element out of range'))\n }\n\n const i = (this.width * row + col) * 2\n this.buffer[i] = value.real\n this.buffer[i + 1] = value.imag\n\n return ok(this)\n }\n\n /**\n * Returns the `colIndex` column of the matrix.\n *\n * @param colIndex - The column index\n * @returns A result object with the column or an error\n */\n columnAt(colIndex: number): Result {\n if (colIndex < 0) {\n return err(Error('colIndex < 0'))\n }\n if (colIndex > this.width) {\n return err(Error('colIndex > this.width'))\n }\n\n const col = []\n for (let row = 0; row < this.height; row++) {\n col.push(this.element(colIndex, row)._unsafeUnwrap())\n }\n return ok(col)\n }\n\n /**\n * Returns the matrix as an array of rows.\n *\n * @returns An array of rows\n */\n rows(): Complex[][] {\n return range(0, this.height - 1).map(row =>\n range(0, this.width - 1).map(col => this.element(col, row)._unsafeUnwrap()),\n )\n }\n\n /**\n * Return true if the matrix is a Hermitian matrix.\n *\n * @param epsilon - The epsilon to use for comparison\n * @returns true if the matrix is a Hermitian matrix\n */\n isHermitian(epsilon = 0): boolean {\n if (this.width !== this.height) {\n return false\n }\n\n for (let col = 0; col < this.width; col++) {\n for (let row = 0; row < this.height; row++) {\n const i = (this.width * row + col) * 2\n const j = (this.width * col + row) * 2\n\n if (Math.abs(this.buffer[i] - this.buffer[j]) > epsilon) {\n return false\n }\n if (Math.abs(this.buffer[i + 1] + this.buffer[j + 1]) > epsilon) {\n return false\n }\n }\n }\n\n return true\n }\n\n /**\n * Returns a trace of the `Matrix`.\n *\n * @returns A `Complex` number representing the trace\n */\n trace(): Complex {\n let tr_r = 0\n let tr_i = 0\n const d = this.width * 2 + 2\n\n for (let i = 0; i < this.buffer.length; i += d) {\n tr_r += this.buffer[i]\n tr_i += this.buffer[i + 1]\n }\n\n return new Complex(tr_r, tr_i)\n }\n\n /**\n * Returns the adjoint matrix of the matrix.\n *\n * @returns The adjoint matrix\n */\n adjoint(): Matrix {\n const w = this.height\n const h = this.width\n const newBuf = new Float64Array(w * h * 2)\n\n for (let row = 0; row < h; row++) {\n for (let col = 0; col < w; col++) {\n const kIn = (col * this.width + row) * 2\n const kOut = (row * w + col) * 2\n\n newBuf[kOut] = this.buffer[kIn]\n newBuf[kOut + 1] = -this.buffer[kIn + 1]\n }\n }\n\n return new Matrix(w, h, newBuf)\n }\n\n /**\n * Matrix addition.\n *\n * @param other - The matrix to add\n * @returns A result object with the matrix or an error\n */\n add(other: Matrix): Result {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n if (other.width !== w || other.height !== h) {\n return err(Error('Matrix.add: incompatible sizes'))\n }\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] + b2[i]\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n plus = this.add.bind(this)\n\n /**\n * Matrix subtraction.\n *\n * @param other - The matrix to subtract\n * @returns A result object with the matrix or an error\n */\n sub(other: Matrix): Result {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n if (other.width !== w || other.height !== h) {\n return err(Error('Matrix.sub: incompatible sizes'))\n }\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] - b2[i]\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n /**\n * Matrix multiplication.\n *\n * @param other - The matrix to multiply\n */\n mult(other: Matrix | number | Complex): Result {\n return other instanceof Matrix ? this.multMatrix(other) : ok(this.multScalar(other))\n }\n\n /**\n * Returns the tensor product of matrices.\n *\n * @param other - The matrix to multiply\n */\n tensorProduct(other: Matrix): Matrix {\n const w1 = this.width\n const h1 = this.height\n const w2 = other.width\n const h2 = other.height\n const w = w1 * w2\n const h = h1 * h2\n const newBuffer = new Float64Array(w * h * 2)\n\n for (let r1 = 0; r1 < h1; r1++) {\n for (let r2 = 0; r2 < h2; r2++) {\n for (let c1 = 0; c1 < w1; c1++) {\n for (let c2 = 0; c2 < w2; c2++) {\n const k1 = (r1 * w1 + c1) * 2\n const k2 = (r2 * w2 + c2) * 2\n const k3 = ((r1 * h2 + r2) * w + (c1 * w2 + c2)) * 2\n const cr1 = this.buffer[k1]\n const ci1 = this.buffer[k1 + 1]\n const cr2 = other.buffer[k2]\n const ci2 = other.buffer[k2 + 1]\n const cr3 = cr1 * cr2 - ci1 * ci2\n const ci3 = cr1 * ci2 + ci1 * cr2\n\n newBuffer[k3] = cr3\n newBuffer[k3 + 1] = ci3\n }\n }\n }\n }\n\n return new Matrix(w, h, newBuffer)\n }\n\n /**\n * Returns true if the Matrix is equal to other.\n *\n * @param other - The other Matrix to compare with\n */\n eq(obj: Matrix | unknown): boolean {\n if (this === obj) return true\n if (!(obj instanceof Matrix)) return false\n\n const other = obj\n return (\n this.width === other.width &&\n this.height === other.height &&\n range(0, this.buffer.length - 1).every(i => this.buffer[i] === other.buffer[i])\n )\n }\n\n /**\n * Returns true if the Matrix is close to the value of other.\n *\n * @param other - The other Matrix to compare with\n */\n nearlyEq(other: Matrix | unknown, epsilon: number): boolean {\n return (\n other instanceof Matrix &&\n this.width === other.width &&\n this.height === other.height &&\n Math.sqrt(this.sub(other)._unsafeUnwrap().norm2()) <= epsilon\n )\n }\n\n format(options = DEFAULT_FORMAT_OPTIONS): string {\n const format = new Format(\n options.allowAbbreviation === undefined ? true : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n options.itemSeparator || ', ',\n )\n\n const data = this.rows()\n .map(row => row.map(e => e.format(format)).join(format.itemSeparator))\n .join(`}${format.itemSeparator}{`)\n\n return `{{${data}}}`\n }\n\n toString(): string {\n return this.format()\n }\n\n qubitDensityMatrixToBlochVector(): [number, number, number] {\n if (this.width !== 2 || this.height !== 2) {\n throw new DetailedError('Need a 2x2 density matrix.', this)\n }\n if (!this.isHermitian(0.01)) {\n throw new DetailedError('Density matrix should be Hermitian.', this)\n }\n if (!this.trace().nearlyEq(1, 0.01)) {\n throw new DetailedError('Density matrix should have unit trace.', this)\n }\n\n // Density matrix from bloch vector equation: M = 1/2 (I + v\u03C3)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [ar, ai, br, bi, cr, ci, dr, di] = this.buffer\n const x = cr + br\n const y = ci - bi\n const z = ar - dr\n return [x, y, z]\n }\n\n clone(): Matrix {\n return new Matrix(this.width, this.height, this.buffer.slice())\n }\n\n private norm2(): number {\n let t = 0\n for (const e of this.buffer) {\n t += e * e\n }\n return t\n }\n\n private multMatrix(other: Matrix): Result {\n if (this.width !== other.height) {\n return err(Error('Incompatible sizes.'))\n }\n\n const w = other.width\n const h = this.height\n const n = this.width\n const newBuffer = new Float64Array(w * h * 2)\n\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const k3 = (r * w + c) * 2\n for (let k = 0; k < n; k++) {\n const k1 = (r * n + k) * 2\n const k2 = (k * w + c) * 2\n const r1 = this.buffer[k1]\n const i1 = this.buffer[k1 + 1]\n const r2 = other.buffer[k2]\n const i2 = other.buffer[k2 + 1]\n const r3 = r1 * r2 - i1 * i2\n const i3 = r1 * i2 + r2 * i1\n newBuffer[k3] += r3\n newBuffer[k3 + 1] += i3\n }\n }\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n private multScalar(v: number | Complex): Matrix {\n const newBuffer = new Float64Array(this.buffer.length)\n const sr = Complex.real(v)\n const si = Complex.imag(v)\n\n for (let i = 0; i < newBuffer.length; i += 2) {\n const vr = this.buffer[i]\n const vi = this.buffer[i + 1]\n newBuffer[i] = vr * sr - vi * si\n newBuffer[i + 1] = vr * si + vi * sr\n }\n\n return new Matrix(this.width, this.height, newBuffer)\n }\n}\n", "import {Complex, radian} from '@qni/common'\nimport {Matrix} from './matrix'\n\nconst i = Complex.I\nconst mi = i.neg()\n\n/**\n * Hadamard gate.\n *\n * ```\n * H = 1/\u221A2 * | 1 1 |\n * | 1 -1 |\n * ```\n */\nexport const H = safeSquareMatrix(1, 1, 1, -1).mult(Math.sqrt(0.5))._unsafeUnwrap()\n\n/**\n * Pauli X gate.\n *\n * ```\n * X = | 0 1 |\n * | 1 0 |\n * ```\n */\nexport const X = safeSquareMatrix(0, 1, 1, 0)\n\n/**\n * Pauli Y gate.\n *\n * ```\n * Y = | 0 -i |\n * | i 0 |\n * ```\n */\nexport const Y = safeSquareMatrix(0, mi, i, 0)\n\n/**\n * Pauli Z gate.\n *\n * ```\n * Z = | 1 0 |\n * | 0 -1 |\n * ```\n */\nexport const Z = safeSquareMatrix(1, 0, 0, -1)\n\n/**\n * S gate.\n *\n * ```\n * S = | 1 0 |\n * | 0 i |\n * ```\n */\nexport const S = safeSquareMatrix(1, 0, 0, i)\n\n/**\n * S\u2020 gate.\n *\n * ```\n * S\u2020 = | 1 0 |\n * | 0 -i |\n * ```\n */\nexport const SDagger = S.adjoint()\n\n/**\n * T gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(i\u03C0/4) |\n * ```\n */\nexport const T = safeSquareMatrix(1, 0, 0, i.times(Math.PI / 4).exp())\n\n/**\n * T\u2020 gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(-i\u03C0/4) |\n * ```\n */\nexport const TDagger = T.adjoint()\n\n/**\n * Phase (P) gate.\n *\n * ```\n * P(\u03C6) = | 1 0 |\n * | 0 exp(i\u03C6) |\n * ```\n */\nexport function PHASE(phi: string): Matrix {\n const \u03C6 = radian(phi)\n\n return safeSquareMatrix(1, 0, 0, i.times(\u03C6).exp())\n}\n\n/**\n * RNOT (\u221AX) gate.\n *\n * ```\n * \u221AX = 1/2 * | 1+i 1-i |\n * | 1-i 1+i |\n * ```\n */\nexport const RNOT = safeSquareMatrix(i.plus(1), mi.plus(1), mi.plus(1), i.plus(1)).mult(0.5)._unsafeUnwrap()\n\n/**\n * Rx gate.\n *\n * ```\n * Rx(\u03B8) = | cos(\u03B8/2) -isin(\u03B8/2) |\n * | -isin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Rx(\u03C0/2) = | cos(\u03C0/4) -isin(\u03C0/4) |\n * | -isin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -i |\n * | -i 1 |\n * ```\n */\nexport function RX(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return safeSquareMatrix(cos\u03B82, mi.times(sin\u03B82), mi.times(sin\u03B82), cos\u03B82)\n}\n\n/**\n * Ry gate.\n *\n * ```\n * Ry(\u03B8) = | cos(\u03B8/2) -sin(\u03B8/2) |\n * | sin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Ry(\u03C0/2) = | cos(\u03C0/4) -sin(\u03C0/4) |\n * | sin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -1 |\n * | 1 1 |\n * ```\n */\nexport function RY(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return safeSquareMatrix(cos\u03B82, -sin\u03B82, sin\u03B82, cos\u03B82)\n}\n\n/**\n * Rz gate.\n *\n * ```\n * Rz(\u03B8) = | exp(-i\u03B8/2) 0 |\n * | 0 exp(i\u03B8/2) |\n *\n * e.g.,\n * Rz(\u03C0/2) = | exp(-i\u03C0/4) 0 |\n * | 0 exp(i\u03C0/4) |\n *\n * = 1/\u221A2 * | 1-i 0 |\n * | 0 1+i |\n * ```\n */\nexport function RZ(theta: string): Matrix {\n const \u03B8 = radian(theta)\n\n return safeSquareMatrix(mi.times(\u03B8 / 2).exp(), 0, 0, i.times(\u03B8 / 2).exp())\n}\n\nfunction safeSquareMatrix(...elements: Array): Matrix {\n const res = Matrix.square(...elements)\n\n if (res.isOk()) {\n return res.value\n }\n\n throw res.error\n}\n", "import {Complex, DetailedError, Util} from '@qni/common'\nimport {Matrix} from './matrix'\nimport {ok, err, Result} from 'neverthrow'\n\nexport class StateVector {\n public matrix: Matrix\n public size: number\n public nqubit: number\n\n get bra(): Matrix {\n return this.matrix.adjoint()\n }\n\n get ket(): Matrix {\n return this.matrix\n }\n\n constructor(bits: string | Matrix) {\n if ('string' === typeof bits) {\n this.matrix = this.bitstringToMatrix(bits)\n } else {\n this.matrix = bits\n }\n\n this.size = this.matrix.height\n this.nqubit = Math.log2(this.size)\n }\n\n amplifier(index: number): Complex {\n return this.matrix.element(0, index)._unsafeUnwrap()\n }\n\n setAmplifier(index: number, value: Complex): Result {\n const res = this.matrix.set(0, index, value)\n if (res.isErr()) {\n return err(Error(res.error.message))\n }\n\n return ok(this)\n }\n\n blochVector(bit: number): [number, number, number] {\n return this.qubitDensityMatrix(bit).qubitDensityMatrixToBlochVector()\n }\n\n isApproximatelyEqualTo(other: StateVector | unknown, epsilon: number): boolean {\n return other instanceof StateVector && this.matrix.nearlyEq(other.matrix, epsilon)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number): Matrix {\n Util.need((controlMask & (1 << qubitIndex)) === 0, 'Matrix.timesQubitOperation: self-controlled')\n Util.need(operation2x2.width === 2 && operation2x2.height === 2, 'Matrix.timesQubitOperation: not 2x2')\n\n const {width: w, height: h, buffer: old} = this.matrix\n const [ar, ai, br, bi, cr, ci, dr, di] = operation2x2.buffer\n\n Util.need(h >= 2 << qubitIndex, 'Matrix.timesQubitOperation: qubit index out of range')\n\n const buf = new Float64Array(old)\n let i = 0\n for (let r = 0; r < h; r++) {\n const isControlled = ((controlMask & r) ^ controlMask) !== 0\n const qubitVal = (r & (1 << qubitIndex)) !== 0\n for (let c = 0; c < w; c++) {\n if (!isControlled && !qubitVal) {\n const j = i + (1 << qubitIndex) * 2 * w\n const xr = buf[i]\n const xi = buf[i + 1]\n const yr = buf[j]\n const yi = buf[j + 1]\n\n buf[i] = xr * ar - xi * ai + yr * br - yi * bi\n buf[i + 1] = xr * ai + xi * ar + yr * bi + yi * br\n buf[j] = xr * cr - xi * ci + yr * dr - yi * di\n buf[j + 1] = xr * ci + xi * cr + yr * di + yi * dr\n }\n i += 2\n }\n }\n\n this.matrix = new Matrix(w, h, buf)\n return this.matrix\n }\n\n toString(): string {\n return this.matrix.toString()\n }\n\n private bitstringToMatrix(bitString: string): Matrix {\n let paren = false\n let parenToken = ''\n const kets = []\n const invalidBitStringError = new DetailedError('Invalid StateVector bit string', bitString)\n\n for (const char of bitString.split('')) {\n switch (char) {\n case '0': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(1, 0)._unsafeUnwrap())\n break\n }\n case '1': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(0, 1)._unsafeUnwrap())\n break\n }\n case '+': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(1, 1)._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n break\n }\n case '-': {\n if (paren) {\n parenToken += '-'\n } else {\n kets.push(Matrix.column_vector(1, -1)._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n }\n break\n }\n case 'i': {\n if (paren) {\n parenToken += 'i'\n } else {\n kets.push(Matrix.column_vector(1, new Complex(0, 1))._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n }\n break\n }\n case '(': {\n if (paren) throw invalidBitStringError\n paren = true\n parenToken = ''\n break\n }\n case ')': {\n if (!paren) throw invalidBitStringError\n if (parenToken !== '-i') throw invalidBitStringError\n kets.push(Matrix.column_vector(1, new Complex(0, -1))._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n paren = false\n break\n }\n default:\n throw invalidBitStringError\n }\n }\n\n if (kets.length === 0) throw invalidBitStringError\n return kets.reduce((result, each) => result.tensorProduct(each))\n }\n\n qubitDensityMatrix(qubitIndex: number): Matrix {\n if (qubitIndex < 0 || qubitIndex >= this.nqubit) {\n throw new DetailedError('Qubit index out of range', qubitIndex)\n }\n\n const traceBits = [...Array(Math.log2(this.matrix.height)).keys()].filter(each => each !== qubitIndex)\n const removeBits = (num: number, bits: number[]) => {\n return bits\n .sort()\n .reverse()\n .reduce((result, each) => {\n let mask = result >> (each + 1)\n mask = mask << each\n const right = ((1 << each) - 1) & result\n\n return mask | right\n }, num)\n }\n\n let densityMatrix = Matrix.build(2, 2)._unsafeUnwrap()\n\n for (let bra = 0; bra < this.matrix.height; bra++) {\n for (let ket = 0; ket < this.matrix.height; ket++) {\n const survived = traceBits.every(b => {\n return ((bra >> b) & 1) === ((ket >> b) & 1)\n })\n if (!survived) continue\n\n const amp = this.matrix\n .element(0, ket)\n ._unsafeUnwrap()\n .times(this.matrix.element(0, bra)._unsafeUnwrap().conjugate())\n if (amp.isEqualTo(0)) continue\n\n const ketMat =\n removeBits(ket, traceBits) === 0\n ? Matrix.column_vector(1, 0)._unsafeUnwrap()\n : Matrix.column_vector(0, 1)._unsafeUnwrap()\n const braMat = removeBits(bra, traceBits) === 0 ? Matrix.row(1, 0) : Matrix.row(0, 1)\n const ketBra = ketMat.mult(braMat)._unsafeUnwrap()\n\n densityMatrix = densityMatrix.add(ketBra.mult(amp)._unsafeUnwrap())._unsafeUnwrap()\n }\n }\n\n return densityMatrix\n }\n}\n", "export function round(n: number, decimal: number): number {\n return Math.round(n * Math.pow(10, decimal)) / Math.pow(10, decimal)\n}\n", "import {\n Complex,\n ResizeableSpan,\n SerializedBlochDisplayType,\n SerializedCircuitStep,\n SerializedControlGateType,\n SerializedHGateType,\n SerializedMeasurementGateType,\n SerializedPhaseGateType,\n SerializedQftDaggerGateType,\n SerializedQftGateType,\n SerializedRnotGateType,\n SerializedRxGateType,\n SerializedRyGateType,\n SerializedRzGateType,\n SerializedSDaggerGateType,\n SerializedSGateType,\n SerializedSpacerGateType,\n SerializedSwapGateType,\n SerializedTDaggerGateType,\n SerializedTGateType,\n SerializedWrite0GateType,\n SerializedWrite1GateType,\n SerializedXGateType,\n SerializedYGateType,\n SerializedZGateType,\n} from '@qni/common'\nimport {H, X, Y, Z, S, SDagger, T, TDagger, PHASE, RNOT, RX, RY, RZ} from './gate-matrices'\nimport {Matrix} from './matrix'\nimport {StateVector} from './state-vector'\nimport {round} from './util'\n\nexport class Simulator {\n public state: StateVector\n public blochVectors!: {[bit: number]: [number, number, number]}\n public measuredBits: {[bit: number]: number}\n public flags: {[key: string]: boolean}\n\n constructor(bits: string | StateVector) {\n if ('string' === typeof bits) {\n this.state = new StateVector(bits)\n } else {\n this.state = bits\n }\n\n this.measuredBits = {}\n this.flags = {}\n }\n\n runStep(operations: SerializedCircuitStep): Simulator {\n this.blochVectors = {}\n\n for (const each of operations) {\n switch (each.type) {\n case SerializedWrite0GateType:\n this.write(0, ...each.targets)\n break\n case SerializedWrite1GateType:\n this.write(1, ...each.targets)\n break\n case SerializedBlochDisplayType:\n for (const target of each.targets) {\n this.blochVectors[target] = this.state.blochVector(target)\n }\n break\n case SerializedHGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.ach(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.h(...each.targets)\n }\n break\n case SerializedXGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.x(...each.targets)\n }\n break\n case SerializedYGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acy(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.y(...each.targets)\n }\n break\n case SerializedZGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acz(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.z(...each.targets)\n }\n break\n case SerializedSpacerGateType:\n break\n case SerializedPhaseGateType: {\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acphase(each.controls || [], each.antiControls || [], each.angle, each.targets[0])\n } else {\n this.cphase(each.targets.slice(1), each.angle, each.targets[0])\n }\n break\n }\n case SerializedSGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acs(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.s(...each.targets)\n }\n break\n }\n case SerializedSDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acsDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.sDagger(...each.targets)\n }\n break\n }\n case SerializedTGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.act(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.t(...each.targets)\n }\n break\n }\n case SerializedTDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.actDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.tDagger(...each.targets)\n }\n break\n }\n case SerializedQftGateType:\n this.qft(each.span, ...each.targets)\n break\n case SerializedQftDaggerGateType:\n this.qftDagger(each.span, ...each.targets)\n break\n case SerializedControlGateType: {\n this.cz(each.targets.slice(1), each.targets[0])\n break\n }\n case SerializedSwapGateType: {\n // TODO: controls \u304C\u8907\u6570\u306E\u5834\u5408\u306B\u3082\u5BFE\u5FDC\n if (each.controls && each.controls.length === 1) {\n this.cswap(each.controls[0], each.targets[0], each.targets[1])\n } else {\n this.swap(each.targets[0], each.targets[1])\n }\n break\n }\n case SerializedRnotGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.rnot(...each.targets)\n }\n break\n case SerializedRxGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrx(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rx(each.angle, ...each.targets)\n }\n break\n case SerializedRyGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acry(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.ry(each.angle, ...each.targets)\n }\n break\n case SerializedRzGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrz(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rz(each.angle, ...each.targets)\n }\n break\n case SerializedMeasurementGateType:\n for (const target of each.targets) {\n this.measure(target)\n if (each.flag) this.flags[each.flag] = this.measuredBits[target] === 1\n }\n break\n default:\n throw new Error('Unknown instruction')\n }\n }\n\n return this\n }\n\n write(value: number, ...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = round(this.pZero(t), 5)\n\n if ((value === 0 && pZero === 0) || (value === 1 && pZero === 1)) {\n this.x(t)\n }\n }\n return this\n }\n\n h(...targets: number[]): Simulator {\n this.u(H, ...targets)\n return this\n }\n\n ch(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, H, ...targets)\n return this\n }\n\n ach(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, H, ...targets)\n this.x(...antiControls)\n return this\n }\n\n x(...targets: number[]): Simulator {\n this.u(X, ...targets)\n return this\n }\n\n cnot(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, X, ...targets)\n\n return this\n }\n\n acnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, X, ...targets)\n this.x(...antiControls)\n\n return this\n }\n\n y(...targets: number[]): Simulator {\n this.u(Y, ...targets)\n return this\n }\n\n cy(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Y, ...targets)\n return this\n }\n\n acy(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Y, ...targets)\n this.x(...antiControls)\n return this\n }\n\n z(...targets: number[]): Simulator {\n this.u(Z, ...targets)\n return this\n }\n\n cz(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Z, ...targets)\n return this\n }\n\n acz(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Z, ...targets)\n this.x(...antiControls)\n return this\n }\n\n phase(phi: string, ...targets: number[]): Simulator {\n this.u(PHASE(phi), ...targets)\n return this\n }\n\n cphase(controls: number | number[], phi: string, ...targets: number[]): Simulator {\n this.cu(controls, PHASE(phi), ...targets)\n return this\n }\n\n acphase(controls: number | number[], antiControls: number[], phi: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, PHASE(phi), ...targets)\n this.x(...antiControls)\n return this\n }\n\n s(...targets: number[]): Simulator {\n this.u(S, ...targets)\n return this\n }\n\n acs(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, S, ...targets)\n this.x(...antiControls)\n return this\n }\n\n sDagger(...targets: number[]): Simulator {\n this.u(SDagger, ...targets)\n return this\n }\n\n acsDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, SDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n t(...targets: number[]): Simulator {\n this.u(T, ...targets)\n return this\n }\n\n ct(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, T, ...targets)\n return this\n }\n\n act(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, T, ...targets)\n this.x(...antiControls)\n return this\n }\n\n tDagger(...targets: number[]): Simulator {\n this.u(TDagger, ...targets)\n return this\n }\n\n actDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, TDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n swap(target0: number, target1: number): Simulator {\n this.cnot(target0, target1).cnot(target1, target0).cnot(target0, target1)\n return this\n }\n\n cswap(control: number, target0: number, target1: number): Simulator {\n this.cnot([control, target0], target1).cnot([control, target1], target0).cnot([control, target0], target1)\n return this\n }\n\n rnot(...targets: number[]): Simulator {\n this.u(RNOT, ...targets)\n return this\n }\n\n crnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n acrnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n rx(theta: string, ...targets: number[]): Simulator {\n this.u(RX(theta), ...targets)\n return this\n }\n\n acrx(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RX(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n crx(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RX(theta), ...targets)\n return this\n }\n\n ry(theta: string, ...targets: number[]): Simulator {\n this.u(RY(theta), ...targets)\n return this\n }\n\n cry(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RY(theta), ...targets)\n return this\n }\n\n acry(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RY(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n rz(theta: string, ...targets: number[]): Simulator {\n this.u(RZ(theta), ...targets)\n return this\n }\n\n crz(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RZ(theta), ...targets)\n return this\n }\n\n acrz(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RZ(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n qft(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.swap(target, target + 1)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .h(target + 1)\n break\n }\n case 3: {\n this.swap(target, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .h(target + 2)\n break\n }\n case 4: {\n this.swap(target, target + 3)\n .swap(target + 1, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .h(target + 3)\n break\n }\n case 5: {\n this.swap(target, target + 4)\n .swap(target + 1, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .h(target + 4)\n break\n }\n case 6: {\n this.swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .h(target + 5)\n break\n }\n case 7: {\n this.swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .h(target + 6)\n break\n }\n case 8: {\n this.swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .h(target + 7)\n break\n }\n case 9: {\n this.swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .h(target + 8)\n break\n }\n case 10: {\n this.swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .h(target + 9)\n break\n }\n case 11: {\n this.swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .h(target + 10)\n break\n }\n case 12: {\n this.swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .h(target + 11)\n break\n }\n case 13: {\n this.swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .h(target + 12)\n break\n }\n case 14: {\n this.swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .h(target + 13)\n break\n }\n case 15: {\n this.swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .h(target + 14)\n break\n }\n case 16: {\n this.swap(target, target + 15)\n .swap(target + 1, target + 14)\n .swap(target + 2, target + 13)\n .swap(target + 3, target + 12)\n .swap(target + 4, target + 11)\n .swap(target + 5, target + 10)\n .swap(target + 6, target + 9)\n .swap(target + 7, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .cphase(target + 15, '\u03C0/32768', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .cphase(target + 15, '\u03C0/16384', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .cphase(target + 15, '\u03C0/8192', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .cphase(target + 15, '\u03C0/4096', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .cphase(target + 15, '\u03C0/2048', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .cphase(target + 15, '\u03C0/1024', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .cphase(target + 15, '\u03C0/512', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .cphase(target + 15, '\u03C0/256', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .cphase(target + 15, '\u03C0/128', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .cphase(target + 15, '\u03C0/64', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .cphase(target + 15, '\u03C0/32', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .cphase(target + 16, '\u03C0/16', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .cphase(target + 16, '\u03C0/8', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .cphase(target + 16, '\u03C0/4', target + 12)\n .h(target + 14)\n .cphase(target + 16, '\u03C0/2', target + 13)\n .h(target + 15)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n qftDagger(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftDaggerSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftDaggerSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.h(target + 1)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 1)\n break\n }\n case 3: {\n this.h(target + 2)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 2)\n break\n }\n case 4: {\n this.h(target + 3)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 3)\n .swap(target + 1, target + 2)\n break\n }\n case 5: {\n this.h(target + 4)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 4)\n .swap(target + 1, target + 3)\n break\n }\n case 6: {\n this.h(target + 5)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n break\n }\n case 7: {\n this.h(target + 6)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n break\n }\n case 8: {\n this.h(target + 7)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n break\n }\n case 9: {\n this.h(target + 8)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n break\n }\n case 10: {\n this.h(target + 9)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n break\n }\n case 11: {\n this.h(target + 10)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n break\n }\n case 12: {\n this.h(target + 11)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n break\n }\n case 13: {\n this.h(target + 12)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n break\n }\n case 14: {\n this.h(target + 13)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target)\n .h(target + 10)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n break\n }\n case 15: {\n this.h(target + 14)\n .cphase(target + 14, '-\u03C0/2', target + 13)\n .h(target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n break\n }\n case 16: {\n this.h(target + 15)\n .cphase(target + 15, '-\u03C0/2', target + 14)\n .h(target + 14)\n .cphase(target + 15, '-\u03C0/4', target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 13)\n .h(target + 13)\n .cphase(target + 15, '-\u03C0/8', target + 12)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 15, '-\u03C0/16', target + 11)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 15, '-\u03C0/32', target + 10)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 15, '-\u03C0/64', target + 9)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 15, '-\u03C0/128', target + 8)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 15, '-\u03C0/256', target + 7)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 15, '-\u03C0/512', target + 6)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 15, '-\u03C0/1024', target + 5)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 15, '-\u03C0/2048', target + 4)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 15, '-\u03C0/4096', target + 3)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 15, '-\u03C0/8192', target + 2)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 15, '-\u03C0/16384', target + 1)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 15, '-\u03C0/32768', target)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target + 1, target + 15)\n .swap(target + 2, target + 14)\n .swap(target + 3, target + 13)\n .swap(target + 4, target + 12)\n .swap(target + 5, target + 11)\n .swap(target + 6, target + 10)\n .swap(target + 7, target + 9)\n .swap(target + 8, target + 8)\n .swap(target + 9, target + 7)\n .swap(target + 10, target + 6)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n measure(...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = this.pZero(t)\n const rand = Math.random()\n\n if (rand <= pZero) {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) !== 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 0\n } else {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) === 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(1 - pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 1\n }\n }\n return this\n }\n\n amplitudes(): Complex[] {\n return this.state.matrix.columnAt(0)._unsafeUnwrap()\n }\n\n private u(u: Matrix, ...targets: number[]): void {\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, 0)\n }\n }\n\n private cu(controls: number | number[], u: Matrix, ...targets: number[]): void {\n const cs = typeof controls === 'number' ? [controls] : controls\n const controlMask = cs.reduce((result, each) => {\n return result | (1 << each)\n }, 0)\n\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, controlMask)\n }\n }\n\n private pZero(target: number): number {\n let p = 0\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << target)) === 0) {\n p += Math.pow(this.state.amplifier(bit).abs(), 2)\n }\n }\n return p\n }\n}\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\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\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import { Simulator } from '@qni/simulator'\nimport { Util } from '@qni/common'\n\nlet resultCache = {}\n\nfunction runSimulator(e) {\n const circuitJson = e.data.circuitJson\n const qubitCount = e.data.qubitCount\n const stepIndex = e.data.stepIndex\n const steps = e.data.steps\n const targets = e.data.targets\n const invalidateCaches = e.data.invalidateCaches\n const simulator = new Simulator('0'.repeat(qubitCount))\n\n Util.notNull(qubitCount)\n Util.notNull(stepIndex)\n Util.notNull(steps)\n Util.notNull(targets)\n\n // const s_time = new Date()\n\n if (resultCache[circuitJson] === undefined || invalidateCaches) {\n resultCache = {}\n resultCache[circuitJson] = {}\n }\n\n // let cacheHit = false\n\n for (const [i, operations] of steps.entries()) {\n let stepResult = {}\n\n if (resultCache[circuitJson][i] === undefined) {\n resultCache[circuitJson][i] = {}\n }\n const cachedStepResult = resultCache[circuitJson][i]\n\n if (\n cachedStepResult === undefined ||\n cachedStepResult.targets === undefined ||\n cachedStepResult.targets.length < targets.length\n ) {\n // cacheHit = false\n\n simulator.runStep(operations)\n\n const allAmplitudes = simulator.state.matrix.clone()\n const blochVectors = Object.assign({}, simulator.blochVectors)\n const measuredBits = Object.assign({}, simulator.measuredBits)\n const flags = Object.assign({}, simulator.flags)\n\n resultCache[circuitJson][i] = {\n type: 'step',\n step: i,\n amplitudes: allAmplitudes,\n targets,\n blochVectors,\n measuredBits,\n flags,\n }\n\n if (i === stepIndex) {\n const amplitudes = pickTargetAmplitudes(targets, allAmplitudes)\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes,\n blochVectors,\n measuredBits,\n flags,\n }\n } else {\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors,\n measuredBits,\n flags,\n }\n }\n } else {\n // cacheHit = true\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors: cachedStepResult.blochVectors,\n measuredBits: cachedStepResult.measuredBits,\n flags: cachedStepResult.flags,\n }\n\n if (i === stepIndex) {\n stepResult.amplitudes = pickTargetAmplitudes(targets, cachedStepResult.amplitudes)\n }\n }\n\n self.postMessage(stepResult)\n }\n\n // const e_time = new Date()\n // const diff = e_time.getTime() - s_time.getTime()\n // const cacheDesc = cacheHit ? \"\uD83C\uDFAF CACHE HIT\" : \"\uD83D\uDCA6 CACHE MISS\"\n // console.log(`\u23F1 simulation took ${diff} msec (${cacheDesc})`)\n\n self.postMessage({ type: 'finish' })\n}\n\nconst pickTargetAmplitudes = (targets, amplitudes) => {\n return targets.reduce((map, each) => {\n if (each >= amplitudes.height) {\n map[each] = [0, 0]\n } else {\n const c = amplitudes.element(0, each).value\n map[each] = [c.real, c.imag]\n }\n return map\n }, {})\n}\n\nself.addEventListener('message', runSimulator)\n"], - "mappings": "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", - "names": ["require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "__name", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi256", "__name", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "__commonJSMin", "exports", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "__name", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "i", "val", "key", "require_AsymmetricMatcher", "__commonJSMin", "exports", "_collections", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "__name", "val", "config", "indentation", "depth", "refs", "printer", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "__commonJSMin", "exports", "_collections", "SPACE", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "__name", "name", "test", "val", "isNamedNodeMap", "collection", "serialize", "config", "indentation", "depth", "refs", "printer", "props", "attribute", "plugin", "_default", "require_escapeHTML", "__commonJSMin", "exports", "escapeHTML", "str", "__name", "require_markup", "__commonJSMin", "exports", "_escapeHTML", "_interopRequireDefault", "obj", "__name", "printProps", "keys", "props", "config", "indentation", "depth", "refs", "printer", "indentationNext", "colors", "key", "value", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "__commonJSMin", "exports", "_markup", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "__name", "val", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "test", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "serialize", "config", "indentation", "depth", "refs", "printer", "type", "attr", "props", "attribute", "plugin", "_default", "require_Immutable", "__commonJSMin", "exports", "_collections", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "__name", "name", "printAsLeaf", "SPACE", "LAZY", "printImmutableEntries", "val", "config", "indentation", "depth", "refs", "printer", "type", "getRecordEntries", "i", "key", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "serialize", "test", "plugin", "_default", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "t", "u", "v", "a", "r", "__name", "require_react_is", "__commonJSMin", "exports", "module", "require_ReactElement", "__commonJSMin", "exports", "ReactIs", "_interopRequireWildcard", "_markup", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "__name", "obj", "cache", "newObj", "hasPropertyDescriptor", "key", "desc", "getChildren", "arg", "children", "item", "getType", "element", "type", "functionName", "getPropKeys", "props", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_ReactTestComponent", "__commonJSMin", "exports", "_markup", "Symbol", "testSymbol", "getPropKeys", "__name", "object", "props", "key", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_build", "__commonJSMin", "exports", "format", "_ansiStyles", "_interopRequireDefault", "_collections", "_AsymmetricMatcher", "_DOMCollection", "_DOMElement", "_Immutable", "_ReactElement", "_ReactTestComponent", "obj", "__name", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "val", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "config", "indentation", "depth", "refs", "hasCalledToJSON", "hitMaxDepth", "min", "printer", "isNewPlugin", "plugin", "printPlugin", "printed", "valChild", "str", "indentationNext", "error", "findPlugin", "plugins", "p", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "key", "getColorsHighlight", "colors", "value", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "createIndent", "indent", "_default", "makeBy", "__name", "f", "n", "j", "out", "i", "range", "__name", "start", "end", "makeBy", "i", "require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "__name", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "wrapAnsi256", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "val", "key", "require_AsymmetricMatcher", "_collections", "os", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "isNamedNodeMap", "collection", "props", "attribute", "__spreadValues", "require_escapeHTML", "escapeHTML", "require_markup", "_escapeHTML", "_interopRequireDefault", "Rh", "obj", "printProps", "colors", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "_markup", "as", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "_a", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "attr", "require_Immutable", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "printAsLeaf", "LAZY", "printImmutableEntries", "getRecordEntries", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "require_react_is_production_min", "c", "g", "h", "l", "p", "q", "u", "require_react_is", "Hh", "require_ReactElement", "ReactIs", "_interopRequireWildcard", "Yh", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "cache", "newObj", "hasPropertyDescriptor", "desc", "getChildren", "arg", "item", "getType", "element", "functionName", "getPropKeys", "require_ReactTestComponent", "testSymbol", "require_build", "format", "_ansiStyles", "Ah", "_AsymmetricMatcher", "Nh", "_DOMCollection", "Dh", "_DOMElement", "Lh", "_Immutable", "Kh", "_ReactElement", "cc", "_ReactTestComponent", "pc", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "hasCalledToJSON", "hitMaxDepth", "min", "isNewPlugin", "printPlugin", "valChild", "error", "findPlugin", "plugins", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "getColorsHighlight", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "_b", "_c", "_d", "_e", "_f", "_g", "createIndent", "indent", "import_fraction", "dh", "rh", "__awaiter", "thisArg", "_arguments", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "rejected", "__generator", "body", "_", "verb", "op", "__read", "o", "ar", "__spreadArray", "to", "from", "pack", "defaultErrorConfig", "createNeverThrowError", "data", "maybeStack", "ResultAsync", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "combineResultList", "resultList", "acc", "combineResultListWithAllErrors", "Result", "fromThrowable", "fn", "args", "_i", "combine", "combineWithAllErrors", "_v", "_ok", "import_pretty_format", "Ec", "radian", "angle", "coefficient", "piCoefficient", "UNICODE_FRACTIONS", "_Format", "fraction", "epsilon", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "digits", "Format", "NumberFormatter", "_NumberFormatter", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "other", "exponent", "formatter", "imagFactor", "imagSign", "Complex", "CONSTRUCTOR_CALLS_NESTING", "DetailedError", "detailsObj", "prettyFormat", "ex", "toParseError", "_Util", "expression", "argDesc", "msg", "url", "path", "lastSlashIndex", "Util", "SerializedBlochDisplayType", "SerializedControlGateType", "SerializedHGateType", "SerializedMeasurementGateType", "SerializedPhaseGateType", "SerializedQftDaggerGateType", "SerializedQftGateType", "SerializedRnotGateType", "SerializedRxGateType", "SerializedRyGateType", "SerializedRzGateType", "SerializedSDaggerGateType", "SerializedSGateType", "SerializedSpacerGateType", "SerializedSwapGateType", "SerializedTDaggerGateType", "SerializedTGateType", "SerializedWrite0GateType", "SerializedWrite1GateType", "SerializedXGateType", "SerializedYGateType", "SerializedZGateType", "Matrix", "_Matrix", "height", "buffer", "rows", "row", "col", "elements", "matrixElementGenerator", "buf", "ri", "ii", "S", "_row", "size", "colIndex", "range", "j", "tr_r", "tr_i", "newBuf", "kIn", "kOut", "b1", "b2", "newBuffer", "w1", "h1", "w2", "h2", "r1", "r2", "c1", "c2", "k1", "k2", "k3", "cr1", "ci1", "cr2", "ci2", "cr3", "ci3", "ai", "br", "bi", "cr", "ci", "dr", "di", "i1", "i2", "r3", "i3", "sr", "si", "vr", "vi", "mi", "H", "safeSquareMatrix", "X", "Y", "Z", "SDagger", "T", "TDagger", "PHASE", "phi", "\u03C6", "$", "RNOT", "RX", "theta", "\u03B8", "cos\u03B82", "sin\u03B82", "RY", "RZ", "StateVector", "_StateVector", "bits", "index", "bit", "operation2x2", "qubitIndex", "controlMask", "G", "old", "isControlled", "qubitVal", "xr", "xi", "yr", "yi", "bitString", "paren", "parenToken", "kets", "invalidBitStringError", "char", "traceBits", "removeBits", "mask", "right", "densityMatrix", "bra", "ket", "amp", "ketMat", "braMat", "ketBra", "round", "decimal", "Simulator", "operations", "Ke", "Ye", "be", "target", "xe", "je", "et", "rt", "$e", "Te", "Pe", "qe", "Ze", "Ve", "Ge", "Ce", "ge", "Xe", "Re", "Ie", "ke", "Oe", "we", "targets", "pZero", "controls", "antiControls", "allControls", "target0", "target1", "control", "span", "import_fraction", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "__name", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "op", "__read", "o", "m", "i", "r", "ar", "error", "__spreadArray", "to", "from", "pack", "l", "defaultErrorConfig", "createNeverThrowError", "message", "config", "data", "maybeStack", "ResultAsync", "res", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "_a", "_b", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "__name", "err", "ResultAsync", "Err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "value", "list", "__spreadArray", "__read", "combineResultList", "resultList", "acc", "result", "ok", "combineResultAsyncList", "asyncResultList", "combineResultListWithAllErrors", "combineResultAsyncListWithAllErrors", "Result", "fromThrowable", "fn", "errorFn", "args", "_i", "e", "combine", "combineWithAllErrors", "Ok", "f", "_f", "_v", "_err", "_", "config", "createNeverThrowError", "error", "v", "_ok", "import_pretty_format", "UNICODE_FRACTIONS", "_Format", "__name", "text", "fraction", "e", "result", "value", "epsilon", "r", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "f", "digits", "NumberFormatter", "_NumberFormatter", "__name", "predicate", "each", "UNICODE_FRACTIONS", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "n", "value", "epsilon", "digits", "fraction", "e", "rootFraction", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "i", "s", "other", "d", "c", "err", "ok", "exponent", "options", "format", "formatter", "imagFactor", "imagSign", "toParseError", "__name", "_Util", "expression", "message", "args", "argDesc", "msg", "v", "url", "path", "lastSlashIndex", "Result", "Util", "resultCache", "runSimulator", "e", "circuitJson", "qubitCount", "stepIndex", "steps", "targets", "invalidateCaches", "simulator", "tc", "G", "i", "operations", "stepResult", "cachedStepResult", "allAmplitudes", "blochVectors", "measuredBits", "flags", "amplitudes", "pickTargetAmplitudes", "__name", "map", "each", "c"] + "sourcesContent": ["/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (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 {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : 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/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "var __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nimport { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain';\nimport { identity, pipe } from './function';\nimport { bindTo as bindTo_, flap as flap_ } from './Functor';\nimport * as _ from './internal';\nimport { getMonoid } from './Ord';\nimport * as RNEA from './ReadonlyNonEmptyArray';\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexport var isNonEmpty = function (as) { return as.length > 0; };\n/**\n * @internal\n */\nexport var isOutOfBound = function (i, as) { return i < 0 || i >= as.length; };\n/**\n * @internal\n */\nexport var prependW = function (head) { return function (tail) { return __spreadArray([head], tail); }; };\n/**\n * @internal\n */\nexport var prepend = prependW;\n/**\n * @internal\n */\nexport var appendW = function (end) { return function (init) { return __spreadArray(__spreadArray([], init), [end]); }; };\n/**\n * @internal\n */\nexport var append = appendW;\n/**\n * @internal\n */\nexport var unsafeInsertAt = function (i, a, as) {\n if (isNonEmpty(as)) {\n var xs = fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\n/**\n * @internal\n */\nexport var unsafeUpdateAt = function (i, a, as) {\n var xs = fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n};\n/**\n * Remove duplicates from a `NonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var uniq = function (E) { return function (as) {\n if (as.length === 1) {\n return copy(as);\n }\n var out = [head(as)];\n var rest = tail(as);\n var _loop_1 = function (a) {\n if (out.every(function (o) { return !E.equals(o, a); })) {\n out.push(a);\n }\n };\n for (var _i = 0, rest_1 = rest; _i < rest_1.length; _i++) {\n var a = rest_1[_i];\n _loop_1(a);\n }\n return out;\n}; };\n/**\n * Sort the elements of a `NonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as NEA from 'fp-ts/NonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = NEA.sortBy([byName, byAge])\n *\n * const persons: NEA.NonEmptyArray = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var sortBy = function (ords) {\n if (isNonEmpty(ords)) {\n var M = getMonoid();\n return sort(ords.reduce(M.concat, M.empty));\n }\n return copy;\n};\n/**\n * @category combinators\n * @since 2.11.0\n */\nexport var union = function (E) {\n var uniqE = uniq(E);\n return function (second) { return function (first) { return uniqE(pipe(first, concat(second))); }; };\n};\n/**\n * Rotate a `NonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var rotate = function (n) { return function (as) {\n var len = as.length;\n var m = Math.round(n) % len;\n if (isOutOfBound(Math.abs(m), as) || m === 0) {\n return copy(as);\n }\n if (m < 0) {\n var _a = splitAt(-m)(as), f = _a[0], s = _a[1];\n return pipe(s, concat(f));\n }\n else {\n return rotate(m - len)(as);\n }\n}; };\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.10.0\n */\nexport var fromReadonlyNonEmptyArray = _.fromReadonlyNonEmptyArray;\n/**\n * Builds a `NonEmptyArray` from an `Array` returning `none` if `as` is an empty array\n *\n * @category constructors\n * @since 2.0.0\n */\nexport var fromArray = function (as) { return (isNonEmpty(as) ? _.some(as) : _.none); };\n/**\n * Return a `NonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var makeBy = function (f) { return function (n) {\n var j = Math.max(0, Math.floor(n));\n var out = [f(0)];\n for (var i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n}; };\n/**\n * Create a `NonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/NonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var replicate = function (a) { return makeBy(function () { return a; }); };\n/**\n * Create a `NonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport var range = function (start, end) {\n return start <= end ? makeBy(function (i) { return start + i; })(end - start + 1) : [start];\n};\n// -------------------------------------------------------------------------------------\n// destructors\n// -------------------------------------------------------------------------------------\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3]), [1, [2, 3]])\n *\n * @category destructors\n * @since 2.9.0\n */\nexport var unprepend = function (as) { return [head(as), tail(as)]; };\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @category destructors\n * @since 2.9.0\n */\nexport var unappend = function (as) { return [init(as), last(as)]; };\nexport function concatW(second) {\n return function (first) { return first.concat(second); };\n}\nexport function concat(x, y) {\n return y ? x.concat(y) : function (y) { return y.concat(x); };\n}\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var reverse = function (as) { return __spreadArray([last(as)], as.slice(0, -1).reverse()); };\nexport function group(E) {\n return function (as) {\n var len = as.length;\n if (len === 0) {\n return [];\n }\n var out = [];\n var head = as[0];\n var nea = [head];\n for (var i = 1; i < len; i++) {\n var a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @category combinators\n * @since 2.0.0\n */\nexport var groupBy = function (f) { return function (as) {\n var out = {};\n for (var _i = 0, as_1 = as; _i < as_1.length; _i++) {\n var a = as_1[_i];\n var k = f(a);\n if (out.hasOwnProperty(k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var sort = function (O) { return function (as) {\n return as.slice().sort(O.compare);\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var insertAt = function (i, a) { return function (as) {\n return i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var updateAt = function (i, a) {\n return modifyAt(i, function () { return a; });\n};\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var modifyAt = function (i, f) { return function (as) {\n return isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var copy = fromReadonlyNonEmptyArray;\n/**\n * @category Pointed\n * @since 2.0.0\n */\nexport var of = function (a) { return [a]; };\n/**\n * @category combinators\n * @since 2.5.1\n */\nexport var zipWith = function (as, bs, f) {\n var cs = [f(as[0], bs[0])];\n var len = Math.min(as.length, bs.length);\n for (var i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexport function zip(as, bs) {\n if (bs === undefined) {\n return function (bs) { return zip(bs, as); };\n }\n return zipWith(as, bs, function (a, b) { return [a, b]; });\n}\n/**\n * @category combinators\n * @since 2.5.1\n */\nexport var unzip = function (abs) {\n var fa = [abs[0][0]];\n var fb = [abs[0][1]];\n for (var i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\n/**\n * Prepend an element to every member of an array\n *\n * @example\n * import { prependAll } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var prependAll = function (middle) { return function (as) {\n var out = [middle, as[0]];\n for (var i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n}; };\n/**\n * Places an element in between members of an array\n *\n * @example\n * import { intersperse } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @category combinators\n * @since 2.9.0\n */\nexport var intersperse = function (middle) { return function (as) {\n var rest = tail(as);\n return isNonEmpty(rest) ? pipe(rest, prependAll(middle), prepend(head(as))) : copy(as);\n}; };\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var foldMapWithIndex = RNEA.foldMapWithIndex;\n/**\n * @category combinators\n * @since 2.0.0\n */\nexport var foldMap = RNEA.foldMap;\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chainWithIndex = function (f) { return function (as) {\n var out = fromReadonlyNonEmptyArray(f(0, head(as)));\n for (var i = 1; i < as.length; i++) {\n out.push.apply(out, f(i, as[i]));\n }\n return out;\n}; };\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chop = function (f) { return function (as) {\n var _a = f(as), b = _a[0], rest = _a[1];\n var out = [b];\n var next = rest;\n while (isNonEmpty(next)) {\n var _b = f(next), b_1 = _b[0], rest_2 = _b[1];\n out.push(b_1);\n next = rest_2;\n }\n return out;\n}; };\n/**\n * Splits a `NonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var splitAt = function (n) { return function (as) {\n var m = Math.max(1, n);\n return m >= as.length ? [copy(as), []] : [pipe(as.slice(1, m), prepend(head(as))), as.slice(m)];\n}; };\n/**\n * @category combinators\n * @since 2.10.0\n */\nexport var chunksOf = function (n) { return chop(splitAt(n)); };\n// -------------------------------------------------------------------------------------\n// non-pipeables\n// -------------------------------------------------------------------------------------\n/* istanbul ignore next */\nvar _map = function (fa, f) { return pipe(fa, map(f)); };\n/* istanbul ignore next */\nvar _mapWithIndex = function (fa, f) { return pipe(fa, mapWithIndex(f)); };\n/* istanbul ignore next */\nvar _ap = function (fab, fa) { return pipe(fab, ap(fa)); };\n/* istanbul ignore next */\nvar _chain = function (ma, f) { return pipe(ma, chain(f)); };\n/* istanbul ignore next */\nvar _extend = function (wa, f) { return pipe(wa, extend(f)); };\n/* istanbul ignore next */\nvar _reduce = function (fa, b, f) { return pipe(fa, reduce(b, f)); };\n/* istanbul ignore next */\nvar _foldMap = function (M) {\n var foldMapM = foldMap(M);\n return function (fa, f) { return pipe(fa, foldMapM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRight = function (fa, b, f) { return pipe(fa, reduceRight(b, f)); };\n/* istanbul ignore next */\nvar _traverse = function (F) {\n var traverseF = traverse(F);\n return function (ta, f) { return pipe(ta, traverseF(f)); };\n};\n/* istanbul ignore next */\nvar _alt = function (fa, that) { return pipe(fa, alt(that)); };\n/* istanbul ignore next */\nvar _reduceWithIndex = function (fa, b, f) {\n return pipe(fa, reduceWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _foldMapWithIndex = function (M) {\n var foldMapWithIndexM = foldMapWithIndex(M);\n return function (fa, f) { return pipe(fa, foldMapWithIndexM(f)); };\n};\n/* istanbul ignore next */\nvar _reduceRightWithIndex = function (fa, b, f) {\n return pipe(fa, reduceRightWithIndex(b, f));\n};\n/* istanbul ignore next */\nvar _traverseWithIndex = function (F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (ta, f) { return pipe(ta, traverseWithIndexF(f)); };\n};\n// -------------------------------------------------------------------------------------\n// type class members\n// -------------------------------------------------------------------------------------\n/**\n * Less strict version of [`alt`](#alt).\n *\n * @category Alt\n * @since 2.9.0\n */\nexport var altW = function (that) { return function (as) {\n return pipe(as, concatW(that()));\n}; };\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * @category Alt\n * @since 2.6.2\n */\nexport var alt = altW;\n/**\n * Apply a function to an argument under a type constructor.\n *\n * @category Apply\n * @since 2.0.0\n */\nexport var ap = function (as) {\n return chain(function (f) { return pipe(as, map(f)); });\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation.\n *\n * @category Monad\n * @since 2.0.0\n */\nexport var chain = function (f) {\n return chainWithIndex(function (_, a) { return f(a); });\n};\n/**\n * @category Extend\n * @since 2.0.0\n */\nexport var extend = function (f) { return function (as) {\n var next = tail(as);\n var out = [f(as)];\n while (isNonEmpty(next)) {\n out.push(f(next));\n next = tail(next);\n }\n return out;\n}; };\n/**\n * Derivable from `Extend`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var duplicate = \n/*#__PURE__*/\nextend(identity);\n/**\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var flatten = \n/*#__PURE__*/\nchain(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category Functor\n * @since 2.0.0\n */\nexport var map = function (f) { return mapWithIndex(function (_, a) { return f(a); }); };\n/**\n * @category FunctorWithIndex\n * @since 2.0.0\n */\nexport var mapWithIndex = function (f) { return function (as) {\n var out = [f(0, head(as))];\n for (var i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n}; };\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexport var reduce = RNEA.reduce;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexport var reduceWithIndex = RNEA.reduceWithIndex;\n/**\n * @category Foldable\n * @since 2.0.0\n */\nexport var reduceRight = RNEA.reduceRight;\n/**\n * @category FoldableWithIndex\n * @since 2.0.0\n */\nexport var reduceRightWithIndex = RNEA.reduceRightWithIndex;\n/**\n * @since 2.6.3\n */\nexport var traverse = function (F) {\n var traverseWithIndexF = traverseWithIndex(F);\n return function (f) { return traverseWithIndexF(function (_, a) { return f(a); }); };\n};\n/**\n * @since 2.6.3\n */\nexport var sequence = function (F) { return traverseWithIndex(F)(function (_, a) { return a; }); };\n/**\n * @since 2.6.3\n */\nexport var traverseWithIndex = function (F) { return function (f) { return function (as) {\n var out = F.map(f(0, head(as)), of);\n for (var i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, function (bs) { return function (b) { return pipe(bs, append(b)); }; }), f(i, as[i]));\n }\n return out;\n}; }; };\n/**\n * @since 2.7.0\n */\nexport var extract = RNEA.head;\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var URI = 'NonEmptyArray';\n/**\n * @category instances\n * @since 2.0.0\n */\nexport var getShow = RNEA.getShow;\n/**\n * Builds a `Semigroup` instance for `NonEmptyArray`\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getSemigroup = function () { return ({\n concat: concat\n}); };\n/**\n * @example\n * import { getEq } from 'fp-ts/NonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.0.0\n */\nexport var getEq = RNEA.getEq;\n/**\n * @category combinators\n * @since 2.11.0\n */\nexport var getUnionSemigroup = function (E) {\n var unionE = union(E);\n return {\n concat: function (first, second) { return unionE(second)(first); }\n };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Functor = {\n URI: URI,\n map: _map\n};\n/**\n * Derivable from `Functor`.\n *\n * @category combinators\n * @since 2.10.0\n */\nexport var flap = \n/*#__PURE__*/\nflap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Pointed = {\n URI: URI,\n of: of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var FunctorWithIndex = {\n URI: URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Apply = {\n URI: URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var apFirst = \n/*#__PURE__*/\napFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * Derivable from `Apply`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var apSecond = \n/*#__PURE__*/\napSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Applicative = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport var Chain = {\n URI: URI,\n map: _map,\n ap: _ap,\n chain: _chain\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * Derivable from `Chain`.\n *\n * @category combinators\n * @since 2.5.0\n */\nexport var chainFirst = \n/*#__PURE__*/\nchainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Monad = {\n URI: URI,\n map: _map,\n ap: _ap,\n of: of,\n chain: _chain\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Foldable = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var FoldableWithIndex = {\n URI: URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Traversable = {\n URI: URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var TraversableWithIndex = {\n URI: URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Alt = {\n URI: URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport var Comonad = {\n URI: URI,\n map: _map,\n extend: _extend,\n extract: extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.9.0\n */\nexport var Do = \n/*#__PURE__*/\nof(_.emptyRecord);\n/**\n * @since 2.8.0\n */\nexport var bindTo = \n/*#__PURE__*/\nbindTo_(Functor);\n/**\n * @since 2.8.0\n */\nexport var bind = \n/*#__PURE__*/\nbind_(Chain);\n// -------------------------------------------------------------------------------------\n// pipeable sequence S\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.8.0\n */\nexport var apS = \n/*#__PURE__*/\napS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.0.0\n */\nexport var head = RNEA.head;\n/**\n * @since 2.0.0\n */\nexport var tail = function (as) { return as.slice(1); };\n/**\n * @since 2.0.0\n */\nexport var last = RNEA.last;\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/NonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.2.0\n */\nexport var init = function (as) { return as.slice(0, -1); };\n/**\n * @since 2.0.0\n */\nexport var min = RNEA.min;\n/**\n * @since 2.0.0\n */\nexport var max = RNEA.max;\n/**\n * @since 2.10.0\n */\nexport var concatAll = function (S) { return function (as) { return as.reduce(S.concat); }; };\n/**\n * Break an `Array` into its first element and remaining elements.\n *\n * @category destructors\n * @since 2.11.0\n */\nexport var matchLeft = function (f) { return function (as) { return f(head(as), tail(as)); }; };\n/**\n * Break an `Array` into its initial elements and the last element.\n *\n * @category destructors\n * @since 2.11.0\n */\nexport var matchRight = function (f) { return function (as) {\n return f(init(as), last(as));\n}; };\n/**\n * Apply a function to the head, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport var modifyHead = function (f) { return function (as) { return __spreadArray([\n f(head(as))\n], tail(as)); }; };\n/**\n * Change the head, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var updateHead = function (a) { return modifyHead(function () { return a; }); };\n/**\n * Apply a function to the last element, creating a new `NonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport var modifyLast = function (f) { return function (as) {\n return pipe(init(as), append(f(last(as))));\n}; };\n/**\n * Change the last element, creating a new `NonEmptyArray`.\n *\n * @category combinators\n * @since 2.11.0\n */\nexport var updateLast = function (a) { return modifyLast(function () { return a; }); };\nexport function groupSort(O) {\n var sortO = sort(O);\n var groupO = group(O);\n return function (as) { return (isNonEmpty(as) ? groupO(sortO(as)) : []); };\n}\nexport function filter(predicate) {\n return filterWithIndex(function (_, a) { return predicate(a); });\n}\n/**\n * Use [`filterWithIndex`](./Array.ts.html#filterwithindex) instead.\n *\n * @category combinators\n * @since 2.0.0\n * @deprecated\n */\nexport var filterWithIndex = function (predicate) { return function (as) { return fromArray(as.filter(function (a, i) { return predicate(i, a); })); }; };\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexport var uncons = unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category destructors\n * @since 2.9.0\n * @deprecated\n */\nexport var unsnoc = unappend;\nexport function cons(head, tail) {\n return tail === undefined ? prepend(head) : pipe(tail, prepend(head));\n}\n/**\n * Use [`append`](./Array.ts.html#append) instead.\n *\n * @category constructors\n * @since 2.0.0\n * @deprecated\n */\nexport var snoc = function (init, end) { return pipe(init, append(end)); };\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category combinators\n * @since 2.9.0\n * @deprecated\n */\nexport var prependToAll = prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @since 2.5.0\n * @deprecated\n */\nexport var fold = RNEA.concatAll;\n/**\n * Use small, specific instances instead.\n *\n * @category instances\n * @since 2.0.0\n * @deprecated\n */\nexport var nonEmptyArray = {\n URI: URI,\n of: of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: _chain,\n extend: _extend,\n extract: extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence: sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n", "/**\n * @license Fraction.js v4.2.0 05/03/2022\n * https://www.xarg.org/2014/03/rational-numbers-in-javascript/\n *\n * Copyright (c) 2021, Robert Eisele (robert@xarg.org)\n * Dual licensed under the MIT or GPL Version 2 licenses.\n **/\n\n\n/**\n *\n * This class offers the possibility to calculate fractions.\n * You can pass a fraction in different formats. Either as array, as double, as string or as an integer.\n *\n * Array/Object form\n * [ 0 => , 1 => ]\n * [ n => , d => ]\n *\n * Integer form\n * - Single integer value\n *\n * Double form\n * - Single double value\n *\n * String form\n * 123.456 - a simple double\n * 123/456 - a string fraction\n * 123.'456' - a double with repeating decimal places\n * 123.(456) - synonym\n * 123.45'6' - a double with repeating last place\n * 123.45(6) - synonym\n *\n * Example:\n *\n * var f = new Fraction(\"9.4'31'\");\n * f.mul([-4, 3]).div(4.9);\n *\n */\n\n(function(root) {\n\n \"use strict\";\n\n // Maximum search depth for cyclic rational numbers. 2000 should be more than enough.\n // Example: 1/7 = 0.(142857) has 6 repeating decimal places.\n // If MAX_CYCLE_LEN gets reduced, long cycles will not be detected and toString() only gets the first 10 digits\n var MAX_CYCLE_LEN = 2000;\n\n // Parsed data to avoid calling \"new\" all the time\n var P = {\n \"s\": 1,\n \"n\": 0,\n \"d\": 1\n };\n\n function assign(n, s) {\n\n if (isNaN(n = parseInt(n, 10))) {\n throw Fraction['InvalidParameter'];\n }\n return n * s;\n }\n\n // Creates a new Fraction internally without the need of the bulky constructor\n function newFraction(n, d) {\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n var f = Object.create(Fraction.prototype);\n f[\"s\"] = n < 0 ? -1 : 1;\n\n n = n < 0 ? -n : n;\n\n var a = gcd(n, d);\n\n f[\"n\"] = n / a;\n f[\"d\"] = d / a;\n return f;\n }\n\n function factorize(num) {\n\n var factors = {};\n\n var n = num;\n var i = 2;\n var s = 4;\n\n while (s <= n) {\n\n while (n % i === 0) {\n n/= i;\n factors[i] = (factors[i] || 0) + 1;\n }\n s+= 1 + 2 * i++;\n }\n\n if (n !== num) {\n if (n > 1)\n factors[n] = (factors[n] || 0) + 1;\n } else {\n factors[num] = (factors[num] || 0) + 1;\n }\n return factors;\n }\n\n var parse = function(p1, p2) {\n\n var n = 0, d = 1, s = 1;\n var v = 0, w = 0, x = 0, y = 1, z = 1;\n\n var A = 0, B = 1;\n var C = 1, D = 1;\n\n var N = 10000000;\n var M;\n\n if (p1 === undefined || p1 === null) {\n /* void */\n } else if (p2 !== undefined) {\n n = p1;\n d = p2;\n s = n * d;\n\n if (n % 1 !== 0 || d % 1 !== 0) {\n throw Fraction['NonIntegerParameter'];\n }\n\n } else\n switch (typeof p1) {\n\n case \"object\":\n {\n if (\"d\" in p1 && \"n\" in p1) {\n n = p1[\"n\"];\n d = p1[\"d\"];\n if (\"s\" in p1)\n n*= p1[\"s\"];\n } else if (0 in p1) {\n n = p1[0];\n if (1 in p1)\n d = p1[1];\n } else {\n throw Fraction['InvalidParameter'];\n }\n s = n * d;\n break;\n }\n case \"number\":\n {\n if (p1 < 0) {\n s = p1;\n p1 = -p1;\n }\n\n if (p1 % 1 === 0) {\n n = p1;\n } else if (p1 > 0) { // check for != 0, scale would become NaN (log(0)), which converges really slow\n\n if (p1 >= 1) {\n z = Math.pow(10, Math.floor(1 + Math.log(p1) / Math.LN10));\n p1/= z;\n }\n\n // Using Farey Sequences\n // http://www.johndcook.com/blog/2010/10/20/best-rational-approximation/\n\n while (B <= N && D <= N) {\n M = (A + C) / (B + D);\n\n if (p1 === M) {\n if (B + D <= N) {\n n = A + C;\n d = B + D;\n } else if (D > B) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n break;\n\n } else {\n\n if (p1 > M) {\n A+= C;\n B+= D;\n } else {\n C+= A;\n D+= B;\n }\n\n if (B > N) {\n n = C;\n d = D;\n } else {\n n = A;\n d = B;\n }\n }\n }\n n*= z;\n } else if (isNaN(p1) || isNaN(p2)) {\n d = n = NaN;\n }\n break;\n }\n case \"string\":\n {\n B = p1.match(/\\d+|./g);\n\n if (B === null)\n throw Fraction['InvalidParameter'];\n\n if (B[A] === '-') {// Check for minus sign at the beginning\n s = -1;\n A++;\n } else if (B[A] === '+') {// Check for plus sign at the beginning\n A++;\n }\n\n if (B.length === A + 1) { // Check if it's just a simple number \"1234\"\n w = assign(B[A++], s);\n } else if (B[A + 1] === '.' || B[A] === '.') { // Check if it's a decimal number\n\n if (B[A] !== '.') { // Handle 0.5 and .5\n v = assign(B[A++], s);\n }\n A++;\n\n // Check for decimal places\n if (A + 1 === B.length || B[A + 1] === '(' && B[A + 3] === ')' || B[A + 1] === \"'\" && B[A + 3] === \"'\") {\n w = assign(B[A], s);\n y = Math.pow(10, B[A].length);\n A++;\n }\n\n // Check for repeating places\n if (B[A] === '(' && B[A + 2] === ')' || B[A] === \"'\" && B[A + 2] === \"'\") {\n x = assign(B[A + 1], s);\n z = Math.pow(10, B[A + 1].length) - 1;\n A+= 3;\n }\n\n } else if (B[A + 1] === '/' || B[A + 1] === ':') { // Check for a simple fraction \"123/456\" or \"123:456\"\n w = assign(B[A], s);\n y = assign(B[A + 2], 1);\n A+= 3;\n } else if (B[A + 3] === '/' && B[A + 1] === ' ') { // Check for a complex fraction \"123 1/2\"\n v = assign(B[A], s);\n w = assign(B[A + 2], s);\n y = assign(B[A + 4], 1);\n A+= 5;\n }\n\n if (B.length <= A) { // Check for more tokens on the stack\n d = y * z;\n s = /* void */\n n = x + d * v + z * w;\n break;\n }\n\n /* Fall through on error */\n }\n default:\n throw Fraction['InvalidParameter'];\n }\n\n if (d === 0) {\n throw Fraction['DivisionByZero'];\n }\n\n P[\"s\"] = s < 0 ? -1 : 1;\n P[\"n\"] = Math.abs(n);\n P[\"d\"] = Math.abs(d);\n };\n\n function modpow(b, e, m) {\n\n var r = 1;\n for (; e > 0; b = (b * b) % m, e >>= 1) {\n\n if (e & 1) {\n r = (r * b) % m;\n }\n }\n return r;\n }\n\n\n function cycleLen(n, d) {\n\n for (; d % 2 === 0;\n d/= 2) {\n }\n\n for (; d % 5 === 0;\n d/= 5) {\n }\n\n if (d === 1) // Catch non-cyclic numbers\n return 0;\n\n // If we would like to compute really large numbers quicker, we could make use of Fermat's little theorem:\n // 10^(d-1) % d == 1\n // However, we don't need such large numbers and MAX_CYCLE_LEN should be the capstone,\n // as we want to translate the numbers to strings.\n\n var rem = 10 % d;\n var t = 1;\n\n for (; rem !== 1; t++) {\n rem = rem * 10 % d;\n\n if (t > MAX_CYCLE_LEN)\n return 0; // Returning 0 here means that we don't print it as a cyclic number. It's likely that the answer is `d-1`\n }\n return t;\n }\n\n\n function cycleStart(n, d, len) {\n\n var rem1 = 1;\n var rem2 = modpow(10, len, d);\n\n for (var t = 0; t < 300; t++) { // s < ~log10(Number.MAX_VALUE)\n // Solve 10^s == 10^(s+t) (mod d)\n\n if (rem1 === rem2)\n return t;\n\n rem1 = rem1 * 10 % d;\n rem2 = rem2 * 10 % d;\n }\n return 0;\n }\n\n function gcd(a, b) {\n\n if (!a)\n return b;\n if (!b)\n return a;\n\n while (1) {\n a%= b;\n if (!a)\n return b;\n b%= a;\n if (!b)\n return a;\n }\n };\n\n /**\n * Module constructor\n *\n * @constructor\n * @param {number|Fraction=} a\n * @param {number=} b\n */\n function Fraction(a, b) {\n\n parse(a, b);\n\n if (this instanceof Fraction) {\n a = gcd(P[\"d\"], P[\"n\"]); // Abuse variable a\n this[\"s\"] = P[\"s\"];\n this[\"n\"] = P[\"n\"] / a;\n this[\"d\"] = P[\"d\"] / a;\n } else {\n return newFraction(P['s'] * P['n'], P['d']);\n }\n }\n\n Fraction['DivisionByZero'] = new Error(\"Division by Zero\");\n Fraction['InvalidParameter'] = new Error(\"Invalid argument\");\n Fraction['NonIntegerParameter'] = new Error(\"Parameters must be integer\");\n\n Fraction.prototype = {\n\n \"s\": 1,\n \"n\": 0,\n \"d\": 1,\n\n /**\n * Calculates the absolute value\n *\n * Ex: new Fraction(-4).abs() => 4\n **/\n \"abs\": function() {\n\n return newFraction(this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Inverts the sign of the current fraction\n *\n * Ex: new Fraction(-4).neg() => 4\n **/\n \"neg\": function() {\n\n return newFraction(-this[\"s\"] * this[\"n\"], this[\"d\"]);\n },\n\n /**\n * Adds two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => 467 / 30\n **/\n \"add\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] + P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Subtracts two rational numbers\n *\n * Ex: new Fraction({n: 2, d: 3}).add(\"14.9\") => -427 / 30\n **/\n \"sub\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * this[\"d\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Multiplies two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").mul(3) => 5776 / 111\n **/\n \"mul\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"n\"],\n this[\"d\"] * P[\"d\"]\n );\n },\n\n /**\n * Divides two rational numbers\n *\n * Ex: new Fraction(\"-17.(345)\").inverse().div(3)\n **/\n \"div\": function(a, b) {\n\n parse(a, b);\n return newFraction(\n this[\"s\"] * P[\"s\"] * this[\"n\"] * P[\"d\"],\n this[\"d\"] * P[\"n\"]\n );\n },\n\n /**\n * Clones the actual object\n *\n * Ex: new Fraction(\"-17.(345)\").clone()\n **/\n \"clone\": function() {\n return newFraction(this['s'] * this['n'], this['d']);\n },\n\n /**\n * Calculates the modulo of two rational numbers - a more precise fmod\n *\n * Ex: new Fraction('4.(3)').mod([7, 8]) => (13/3) % (7/8) = (5/6)\n **/\n \"mod\": function(a, b) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return new Fraction(NaN);\n }\n\n if (a === undefined) {\n return newFraction(this[\"s\"] * this[\"n\"] % this[\"d\"], 1);\n }\n\n parse(a, b);\n if (0 === P[\"n\"] && 0 === this[\"d\"]) {\n throw Fraction['DivisionByZero'];\n }\n\n /*\n * First silly attempt, kinda slow\n *\n return that[\"sub\"]({\n \"n\": num[\"n\"] * Math.floor((this.n / this.d) / (num.n / num.d)),\n \"d\": num[\"d\"],\n \"s\": this[\"s\"]\n });*/\n\n /*\n * New attempt: a1 / b1 = a2 / b2 * q + r\n * => b2 * a1 = a2 * b1 * q + b1 * b2 * r\n * => (b2 * a1 % a2 * b1) / (b1 * b2)\n */\n return newFraction(\n this[\"s\"] * (P[\"d\"] * this[\"n\"]) % (P[\"n\"] * this[\"d\"]),\n P[\"d\"] * this[\"d\"]\n );\n },\n\n /**\n * Calculates the fractional gcd of two rational numbers\n *\n * Ex: new Fraction(5,8).gcd(3,7) => 1/56\n */\n \"gcd\": function(a, b) {\n\n parse(a, b);\n\n // gcd(a / b, c / d) = gcd(a, c) / lcm(b, d)\n\n return newFraction(gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]), P[\"d\"] * this[\"d\"]);\n },\n\n /**\n * Calculates the fractional lcm of two rational numbers\n *\n * Ex: new Fraction(5,8).lcm(3,7) => 15\n */\n \"lcm\": function(a, b) {\n\n parse(a, b);\n\n // lcm(a / b, c / d) = lcm(a, c) / gcd(b, d)\n\n if (P[\"n\"] === 0 && this[\"n\"] === 0) {\n return newFraction(0, 1);\n }\n return newFraction(P[\"n\"] * this[\"n\"], gcd(P[\"n\"], this[\"n\"]) * gcd(P[\"d\"], this[\"d\"]));\n },\n\n /**\n * Calculates the ceil of a rational number\n *\n * Ex: new Fraction('4.(3)').ceil() => (5 / 1)\n **/\n \"ceil\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.ceil(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Calculates the floor of a rational number\n *\n * Ex: new Fraction('4.(3)').floor() => (4 / 1)\n **/\n \"floor\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.floor(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Rounds a rational numbers\n *\n * Ex: new Fraction('4.(3)').round() => (4 / 1)\n **/\n \"round\": function(places) {\n\n places = Math.pow(10, places || 0);\n\n if (isNaN(this[\"n\"]) || isNaN(this[\"d\"])) {\n return new Fraction(NaN);\n }\n return newFraction(Math.round(places * this[\"s\"] * this[\"n\"] / this[\"d\"]), places);\n },\n\n /**\n * Gets the inverse of the fraction, means numerator and denominator are exchanged\n *\n * Ex: new Fraction([-3, 4]).inverse() => -4 / 3\n **/\n \"inverse\": function() {\n\n return newFraction(this[\"s\"] * this[\"d\"], this[\"n\"]);\n },\n\n /**\n * Calculates the fraction to some rational exponent, if possible\n *\n * Ex: new Fraction(-1,2).pow(-3) => -8\n */\n \"pow\": function(a, b) {\n\n parse(a, b);\n\n // Trivial case when exp is an integer\n\n if (P['d'] === 1) {\n\n if (P['s'] < 0) {\n return newFraction(Math.pow(this['s'] * this[\"d\"], P['n']), Math.pow(this[\"n\"], P['n']));\n } else {\n return newFraction(Math.pow(this['s'] * this[\"n\"], P['n']), Math.pow(this[\"d\"], P['n']));\n }\n }\n\n // Negative roots become complex\n // (-a/b)^(c/d) = x\n // <=> (-1)^(c/d) * (a/b)^(c/d) = x\n // <=> (cos(pi) + i*sin(pi))^(c/d) * (a/b)^(c/d) = x # rotate 1 by 180\u00B0\n // <=> (cos(c*pi/d) + i*sin(c*pi/d)) * (a/b)^(c/d) = x # DeMoivre's formula in Q ( https://proofwiki.org/wiki/De_Moivre%27s_Formula/Rational_Index )\n // From which follows that only for c=0 the root is non-complex. c/d is a reduced fraction, so that sin(c/dpi)=0 occurs for d=1, which is handled by our trivial case.\n if (this['s'] < 0) return null;\n\n // Now prime factor n and d\n var N = factorize(this['n']);\n var D = factorize(this['d']);\n\n // Exponentiate and take root for n and d individually\n var n = 1;\n var d = 1;\n for (var k in N) {\n if (k === '1') continue;\n if (k === '0') {\n n = 0;\n break;\n }\n N[k]*= P['n'];\n\n if (N[k] % P['d'] === 0) {\n N[k]/= P['d'];\n } else return null;\n n*= Math.pow(k, N[k]);\n }\n\n for (var k in D) {\n if (k === '1') continue;\n D[k]*= P['n'];\n\n if (D[k] % P['d'] === 0) {\n D[k]/= P['d'];\n } else return null;\n d*= Math.pow(k, D[k]);\n }\n\n if (P['s'] < 0) {\n return newFraction(d, n);\n }\n return newFraction(n, d);\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"equals\": function(a, b) {\n\n parse(a, b);\n return this[\"s\"] * this[\"n\"] * P[\"d\"] === P[\"s\"] * P[\"n\"] * this[\"d\"]; // Same as compare() === 0\n },\n\n /**\n * Check if two rational numbers are the same\n *\n * Ex: new Fraction(19.6).equals([98, 5]);\n **/\n \"compare\": function(a, b) {\n\n parse(a, b);\n var t = (this[\"s\"] * this[\"n\"] * P[\"d\"] - P[\"s\"] * P[\"n\"] * this[\"d\"]);\n return (0 < t) - (t < 0);\n },\n\n \"simplify\": function(eps) {\n\n if (isNaN(this['n']) || isNaN(this['d'])) {\n return this;\n }\n\n eps = eps || 0.001;\n\n var thisABS = this['abs']();\n var cont = thisABS['toContinued']();\n\n for (var i = 1; i < cont.length; i++) {\n\n var s = newFraction(cont[i - 1], 1);\n for (var k = i - 2; k >= 0; k--) {\n s = s['inverse']()['add'](cont[k]);\n }\n\n if (s['sub'](thisABS)['abs']().valueOf() < eps) {\n return s['mul'](this['s']);\n }\n }\n return this;\n },\n\n /**\n * Check if two rational numbers are divisible\n *\n * Ex: new Fraction(19.6).divisible(1.5);\n */\n \"divisible\": function(a, b) {\n\n parse(a, b);\n return !(!(P[\"n\"] * this[\"d\"]) || ((this[\"n\"] * P[\"d\"]) % (P[\"n\"] * this[\"d\"])));\n },\n\n /**\n * Returns a decimal representation of the fraction\n *\n * Ex: new Fraction(\"100.'91823'\").valueOf() => 100.91823918239183\n **/\n 'valueOf': function() {\n\n return this[\"s\"] * this[\"n\"] / this[\"d\"];\n },\n\n /**\n * Returns a string-fraction representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toFraction(true) => \"4 1/3\"\n **/\n 'toFraction': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n str+= \" \";\n n%= d;\n }\n\n str+= n;\n str+= '/';\n str+= d;\n }\n return str;\n },\n\n /**\n * Returns a latex representation of a Fraction object\n *\n * Ex: new Fraction(\"1.'3'\").toLatex() => \"\\frac{4}{3}\"\n **/\n 'toLatex': function(excludeWhole) {\n\n var whole, str = \"\";\n var n = this[\"n\"];\n var d = this[\"d\"];\n if (this[\"s\"] < 0) {\n str+= '-';\n }\n\n if (d === 1) {\n str+= n;\n } else {\n\n if (excludeWhole && (whole = Math.floor(n / d)) > 0) {\n str+= whole;\n n%= d;\n }\n\n str+= \"\\\\frac{\";\n str+= n;\n str+= '}{';\n str+= d;\n str+= '}';\n }\n return str;\n },\n\n /**\n * Returns an array of continued fraction elements\n *\n * Ex: new Fraction(\"7/8\").toContinued() => [0,1,7]\n */\n 'toContinued': function() {\n\n var t;\n var a = this['n'];\n var b = this['d'];\n var res = [];\n\n if (isNaN(a) || isNaN(b)) {\n return res;\n }\n\n do {\n res.push(Math.floor(a / b));\n t = a % b;\n a = b;\n b = t;\n } while (a !== 1);\n\n return res;\n },\n\n /**\n * Creates a string representation of a fraction with all digits\n *\n * Ex: new Fraction(\"100.'91823'\").toString() => \"100.(91823)\"\n **/\n 'toString': function(dec) {\n\n var N = this[\"n\"];\n var D = this[\"d\"];\n\n if (isNaN(N) || isNaN(D)) {\n return \"NaN\";\n }\n\n dec = dec || 15; // 15 = decimal places when no repetation\n\n var cycLen = cycleLen(N, D); // Cycle length\n var cycOff = cycleStart(N, D, cycLen); // Cycle start\n\n var str = this['s'] < 0 ? \"-\" : \"\";\n\n str+= N / D | 0;\n\n N%= D;\n N*= 10;\n\n if (N)\n str+= \".\";\n\n if (cycLen) {\n\n for (var i = cycOff; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \"(\";\n for (var i = cycLen; i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n str+= \")\";\n } else {\n for (var i = dec; N && i--;) {\n str+= N / D | 0;\n N%= D;\n N*= 10;\n }\n }\n return str;\n }\n };\n\n if (typeof define === \"function\" && define[\"amd\"]) {\n define([], function() {\n return Fraction;\n });\n } else if (typeof exports === \"object\") {\n Object.defineProperty(Fraction, \"__esModule\", { 'value': true });\n Fraction['default'] = Fraction;\n Fraction['Fraction'] = Fraction;\n module['exports'] = Fraction;\n } else {\n root['Fraction'] = Fraction;\n }\n\n})(this);\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n const rawKeys = Object.keys(object);\n const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n if (Object.getOwnPropertySymbols) {\n Object.getOwnPropertySymbols(object).forEach(symbol => {\n if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n keys.push(symbol);\n }\n });\n }\n return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer,\n // Too bad, so sad that separator for ECMAScript Map has been ' => '\n // What a distracting diff if you change a data structure to/from\n // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n separator = ': '\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n const name = printer(\n current.value[0],\n config,\n indentationNext,\n depth,\n refs\n );\n const value = printer(\n current.value[1],\n config,\n indentationNext,\n depth,\n refs\n );\n result += name + separator + value;\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n iterator,\n config,\n indentation,\n depth,\n refs,\n printer\n) {\n let result = '';\n let width = 0;\n let current = iterator.next();\n if (!current.done) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n while (!current.done) {\n result += indentationNext;\n if (width++ === config.maxWidth) {\n result += '\u2026';\n break;\n }\n result += printer(current.value, config, indentationNext, depth, refs);\n current = iterator.next();\n if (!current.done) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n let result = '';\n if (list.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < list.length; i++) {\n result += indentationNext;\n if (i === config.maxWidth) {\n result += '\u2026';\n break;\n }\n if (i in list) {\n result += printer(list[i], config, indentationNext, depth, refs);\n }\n if (i < list.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n let result = '';\n const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n if (keys.length) {\n result += config.spacingOuter;\n const indentationNext = indentation + config.indent;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const name = printer(key, config, indentationNext, depth, refs);\n const value = printer(val[key], config, indentationNext, depth, refs);\n result += `${indentationNext + name}: ${value}`;\n if (i < keys.length - 1) {\n result += `,${config.spacingInner}`;\n } else if (!config.min) {\n result += ',';\n }\n }\n result += config.spacingOuter + indentation;\n }\n return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('jest.asymmetricMatcher')\n : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n const stringedValue = val.toString();\n if (\n stringedValue === 'ArrayContaining' ||\n stringedValue === 'ArrayNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (\n stringedValue === 'ObjectContaining' ||\n stringedValue === 'ObjectNotContaining'\n ) {\n if (++depth > config.maxDepth) {\n return `[${stringedValue}]`;\n }\n return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n val.sample,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n if (\n stringedValue === 'StringMatching' ||\n stringedValue === 'StringNotMatching'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (\n stringedValue === 'StringContaining' ||\n stringedValue === 'StringNotContaining'\n ) {\n return (\n stringedValue +\n SPACE +\n printer(val.sample, config, indentation, depth, refs)\n );\n }\n if (typeof val.toAsymmetricMatcher !== 'function') {\n throw new Error(\n `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n );\n }\n return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n val &&\n val.constructor &&\n !!val.constructor.name &&\n testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n const name = collection.constructor.name;\n if (++depth > config.maxDepth) {\n return `[${name}]`;\n }\n return (\n (config.min ? '' : name + SPACE) +\n (OBJECT_NAMES.indexOf(name) !== -1\n ? `{${(0, _collections.printObjectProperties)(\n isNamedNodeMap(collection)\n ? Array.from(collection).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {})\n : {\n ...collection\n },\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`\n : `[${(0, _collections.printListItems)(\n Array.from(collection),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`)\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n return str.replace(//g, '>');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.printText =\n exports.printProps =\n exports.printElementAsLeaf =\n exports.printElement =\n exports.printComment =\n exports.printChildren =\n void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n const indentationNext = indentation + config.indent;\n const colors = config.colors;\n return keys\n .map(key => {\n const value = props[key];\n let printed = printer(value, config, indentationNext, depth, refs);\n if (typeof value !== 'string') {\n if (printed.indexOf('\\n') !== -1) {\n printed =\n config.spacingOuter +\n indentationNext +\n printed +\n config.spacingOuter +\n indentation;\n }\n printed = `{${printed}}`;\n }\n return `${\n config.spacingInner +\n indentation +\n colors.prop.open +\n key +\n colors.prop.close\n }=${colors.value.open}${printed}${colors.value.close}`;\n })\n .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n children\n .map(\n child =>\n config.spacingOuter +\n indentation +\n (typeof child === 'string'\n ? printText(child, config)\n : printer(child, config, indentation, depth, refs))\n )\n .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n const contentColor = config.colors.content;\n return (\n contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n const commentColor = config.colors.comment;\n return `${commentColor.open}${\n commentColor.close\n }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n type,\n printedProps,\n printedChildren,\n config,\n indentation\n) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${\n printedProps &&\n tagColor.close +\n printedProps +\n config.spacingOuter +\n indentation +\n tagColor.open\n }${\n printedChildren\n ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n const tagColor = config.colors.tag;\n return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n try {\n return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n } catch {\n return false;\n }\n};\nconst testNode = val => {\n const constructorName = val.constructor.name;\n const {nodeType, tagName} = val;\n const isCustomElement =\n (typeof tagName === 'string' && tagName.includes('-')) ||\n testHasAttribute(val);\n return (\n (nodeType === ELEMENT_NODE &&\n (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n (nodeType === TEXT_NODE && constructorName === 'Text') ||\n (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n if (nodeIsText(node)) {\n return (0, _markup.printText)(node.data, config);\n }\n if (nodeIsComment(node)) {\n return (0, _markup.printComment)(node.data, config);\n }\n const type = nodeIsFragment(node)\n ? 'DocumentFragment'\n : node.tagName.toLowerCase();\n if (++depth > config.maxDepth) {\n return (0, _markup.printElementAsLeaf)(type, config);\n }\n return (0, _markup.printElement)(\n type,\n (0, _markup.printProps)(\n nodeIsFragment(node)\n ? []\n : Array.from(node.attributes)\n .map(attr => attr.name)\n .sort(),\n nodeIsFragment(node)\n ? {}\n : Array.from(node.attributes).reduce((props, attribute) => {\n props[attribute.name] = attribute.value;\n return props;\n }, {}),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n Array.prototype.slice.call(node.childNodes || node.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\n};\nexports.serialize = serialize;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}{${(0,\n _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n let i = 0;\n return {\n next() {\n if (i < val._keys.length) {\n const key = val._keys[i++];\n return {\n done: false,\n value: [key, val.get(key)]\n };\n }\n return {\n done: true,\n value: undefined\n };\n }\n };\n}\nconst printImmutableRecord = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n) => {\n // _name property is defined only for an Immutable Record instance\n // which was constructed with a second optional descriptive name arg\n const name = getImmutableName(val._name || 'Record');\n return ++depth > config.maxDepth\n ? printAsLeaf(name)\n : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n getRecordEntries(val),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n const name = getImmutableName('Seq');\n if (++depth > config.maxDepth) {\n return printAsLeaf(name);\n }\n if (val[IS_KEYED_SENTINEL]) {\n return `${name + SPACE}{${\n // from Immutable collection of entries or from ECMAScript object\n val._iter || val._object\n ? (0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }}`;\n }\n return `${name + SPACE}[${\n val._iter ||\n // from Immutable collection of values\n val._array ||\n // from ECMAScript array\n val._collection ||\n // from ECMAScript collection in immutable v4\n val._iterable // from ECMAScript collection in immutable v3\n ? (0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )\n : LAZY\n }]`;\n};\nconst printImmutableValues = (\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n type\n) =>\n ++depth > config.maxDepth\n ? printAsLeaf(getImmutableName(type))\n : `${getImmutableName(type) + SPACE}[${(0,\n _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n if (val[IS_MAP_SENTINEL]) {\n return printImmutableEntries(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n );\n }\n if (val[IS_LIST_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'List'\n );\n }\n if (val[IS_SET_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n );\n }\n if (val[IS_STACK_SENTINEL]) {\n return printImmutableValues(\n val,\n config,\n indentation,\n depth,\n refs,\n printer,\n 'Stack'\n );\n }\n if (val[IS_SEQ_SENTINEL]) {\n return printImmutableSeq(val, config, indentation, depth, refs, printer);\n }\n\n // For compatibility with immutable v3 and v4, let record be the default.\n return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n val &&\n (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== 'function') return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (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 {default: obj};\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor =\n Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : 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/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n if (Array.isArray(arg)) {\n arg.forEach(item => {\n getChildren(item, children);\n });\n } else if (arg != null && arg !== false) {\n children.push(arg);\n }\n return children;\n};\nconst getType = element => {\n const type = element.type;\n if (typeof type === 'string') {\n return type;\n }\n if (typeof type === 'function') {\n return type.displayName || type.name || 'Unknown';\n }\n if (ReactIs.isFragment(element)) {\n return 'React.Fragment';\n }\n if (ReactIs.isSuspense(element)) {\n return 'React.Suspense';\n }\n if (typeof type === 'object' && type !== null) {\n if (ReactIs.isContextProvider(element)) {\n return 'Context.Provider';\n }\n if (ReactIs.isContextConsumer(element)) {\n return 'Context.Consumer';\n }\n if (ReactIs.isForwardRef(element)) {\n if (type.displayName) {\n return type.displayName;\n }\n const functionName = type.render.displayName || type.render.name || '';\n return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n }\n if (ReactIs.isMemo(element)) {\n const functionName =\n type.displayName || type.type.displayName || type.type.name || '';\n return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n }\n }\n return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n const {props} = element;\n return Object.keys(props)\n .filter(key => key !== 'children' && props[key] !== undefined)\n .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(getType(element), config)\n : (0, _markup.printElement)(\n getType(element),\n (0, _markup.printProps)(\n getPropKeys(element),\n element.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n (0, _markup.printChildren)(\n getChildren(element.props.children),\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n ),\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n typeof Symbol === 'function' && Symbol.for\n ? Symbol.for('react.test.json')\n : 0xea71357;\nconst getPropKeys = object => {\n const {props} = object;\n return props\n ? Object.keys(props)\n .filter(key => props[key] !== undefined)\n .sort()\n : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n ++depth > config.maxDepth\n ? (0, _markup.printElementAsLeaf)(object.type, config)\n : (0, _markup.printElement)(\n object.type,\n object.props\n ? (0, _markup.printProps)(\n getPropKeys(object),\n object.props,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n object.children\n ? (0, _markup.printChildren)(\n object.children,\n config,\n indentation + config.indent,\n depth,\n refs,\n printer\n )\n : '',\n config,\n indentation\n );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n serialize,\n test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n constructor(message, stack) {\n super(message);\n this.stack = stack;\n this.name = this.constructor.name;\n }\n}\nfunction isToStringedArrayType(toStringed) {\n return (\n toStringed === '[object Array]' ||\n toStringed === '[object ArrayBuffer]' ||\n toStringed === '[object DataView]' ||\n toStringed === '[object Float32Array]' ||\n toStringed === '[object Float64Array]' ||\n toStringed === '[object Int8Array]' ||\n toStringed === '[object Int16Array]' ||\n toStringed === '[object Int32Array]' ||\n toStringed === '[object Uint8Array]' ||\n toStringed === '[object Uint8ClampedArray]' ||\n toStringed === '[object Uint16Array]' ||\n toStringed === '[object Uint32Array]'\n );\n}\nfunction printNumber(val) {\n return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n if (!printFunctionName) {\n return '[Function]';\n }\n return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n if (val === true || val === false) {\n return `${val}`;\n }\n if (val === undefined) {\n return 'undefined';\n }\n if (val === null) {\n return 'null';\n }\n const typeOf = typeof val;\n if (typeOf === 'number') {\n return printNumber(val);\n }\n if (typeOf === 'bigint') {\n return printBigInt(val);\n }\n if (typeOf === 'string') {\n if (escapeString) {\n return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n }\n return `\"${val}\"`;\n }\n if (typeOf === 'function') {\n return printFunction(val, printFunctionName);\n }\n if (typeOf === 'symbol') {\n return printSymbol(val);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object WeakMap]') {\n return 'WeakMap {}';\n }\n if (toStringed === '[object WeakSet]') {\n return 'WeakSet {}';\n }\n if (\n toStringed === '[object Function]' ||\n toStringed === '[object GeneratorFunction]'\n ) {\n return printFunction(val, printFunctionName);\n }\n if (toStringed === '[object Symbol]') {\n return printSymbol(val);\n }\n if (toStringed === '[object Date]') {\n return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n }\n if (toStringed === '[object Error]') {\n return printError(val);\n }\n if (toStringed === '[object RegExp]') {\n if (escapeRegex) {\n // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n return regExpToString.call(val);\n }\n if (val instanceof Error) {\n return printError(val);\n }\n return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n) {\n if (refs.indexOf(val) !== -1) {\n return '[Circular]';\n }\n refs = refs.slice();\n refs.push(val);\n const hitMaxDepth = ++depth > config.maxDepth;\n const min = config.min;\n if (\n config.callToJSON &&\n !hitMaxDepth &&\n val.toJSON &&\n typeof val.toJSON === 'function' &&\n !hasCalledToJSON\n ) {\n return printer(val.toJSON(), config, indentation, depth, refs, true);\n }\n const toStringed = toString.call(val);\n if (toStringed === '[object Arguments]') {\n return hitMaxDepth\n ? '[Arguments]'\n : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (isToStringedArrayType(toStringed)) {\n return hitMaxDepth\n ? `[${val.constructor.name}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && val.constructor.name === 'Array'\n ? ''\n : `${val.constructor.name} `\n }[${(0, _collections.printListItems)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}]`;\n }\n if (toStringed === '[object Map]') {\n return hitMaxDepth\n ? '[Map]'\n : `Map {${(0, _collections.printIteratorEntries)(\n val.entries(),\n config,\n indentation,\n depth,\n refs,\n printer,\n ' => '\n )}}`;\n }\n if (toStringed === '[object Set]') {\n return hitMaxDepth\n ? '[Set]'\n : `Set {${(0, _collections.printIteratorValues)(\n val.values(),\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n }\n\n // Avoid failure to serialize global window object in jsdom test environment.\n // For example, not even relevant if window is prop of React element.\n return hitMaxDepth || isWindow(val)\n ? `[${getConstructorName(val)}]`\n : `${\n min\n ? ''\n : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n ? ''\n : `${getConstructorName(val)} `\n }{${(0, _collections.printObjectProperties)(\n val,\n config,\n indentation,\n depth,\n refs,\n printer\n )}}`;\n}\nfunction isNewPlugin(plugin) {\n return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n let printed;\n try {\n printed = isNewPlugin(plugin)\n ? plugin.serialize(val, config, indentation, depth, refs, printer)\n : plugin.print(\n val,\n valChild => printer(valChild, config, indentation, depth, refs),\n str => {\n const indentationNext = indentation + config.indent;\n return (\n indentationNext +\n str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n );\n },\n {\n edgeSpacing: config.spacingOuter,\n min: config.min,\n spacing: config.spacingInner\n },\n config.colors\n );\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n if (typeof printed !== 'string') {\n throw new Error(\n `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n );\n }\n return printed;\n}\nfunction findPlugin(plugins, val) {\n for (let p = 0; p < plugins.length; p++) {\n try {\n if (plugins[p].test(val)) {\n return plugins[p];\n }\n } catch (error) {\n throw new PrettyFormatPluginError(error.message, error.stack);\n }\n }\n return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n const plugin = findPlugin(config.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, config, indentation, depth, refs);\n }\n const basicResult = printBasicValue(\n val,\n config.printFunctionName,\n config.escapeRegex,\n config.escapeString\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(\n val,\n config,\n indentation,\n depth,\n refs,\n hasCalledToJSON\n );\n}\nconst DEFAULT_THEME = {\n comment: 'gray',\n content: 'reset',\n prop: 'yellow',\n tag: 'cyan',\n value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n callToJSON: true,\n compareKeys: undefined,\n escapeRegex: false,\n escapeString: true,\n highlight: false,\n indent: 2,\n maxDepth: Infinity,\n maxWidth: Infinity,\n min: false,\n plugins: [],\n printBasicPrototype: true,\n printFunctionName: true,\n theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n Object.keys(options).forEach(key => {\n if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n throw new Error(`pretty-format: Unknown option \"${key}\".`);\n }\n });\n if (options.min && options.indent !== undefined && options.indent !== 0) {\n throw new Error(\n 'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n );\n }\n if (options.theme !== undefined) {\n if (options.theme === null) {\n throw new Error('pretty-format: Option \"theme\" must not be null.');\n }\n if (typeof options.theme !== 'object') {\n throw new Error(\n `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n );\n }\n }\n}\nconst getColorsHighlight = options =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n const value =\n options.theme && options.theme[key] !== undefined\n ? options.theme[key]\n : DEFAULT_THEME[key];\n const color = value && _ansiStyles.default[value];\n if (\n color &&\n typeof color.close === 'string' &&\n typeof color.open === 'string'\n ) {\n colors[key] = color;\n } else {\n throw new Error(\n `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n );\n }\n return colors;\n }, Object.create(null));\nconst getColorsEmpty = () =>\n DEFAULT_THEME_KEYS.reduce((colors, key) => {\n colors[key] = {\n close: '',\n open: ''\n };\n return colors;\n }, Object.create(null));\nconst getPrintFunctionName = options =>\n options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n compareKeys:\n typeof options?.compareKeys === 'function' || options?.compareKeys === null\n ? options.compareKeys\n : DEFAULT_OPTIONS.compareKeys,\n escapeRegex: getEscapeRegex(options),\n escapeString: getEscapeString(options),\n indent: options?.min\n ? ''\n : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n min: options?.min ?? DEFAULT_OPTIONS.min,\n plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n printBasicPrototype: options?.printBasicPrototype ?? true,\n printFunctionName: getPrintFunctionName(options),\n spacingInner: options?.min ? ' ' : '\\n',\n spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n if (options) {\n validateOptions(options);\n if (options.plugins) {\n const plugin = findPlugin(options.plugins, val);\n if (plugin !== null) {\n return printPlugin(plugin, val, getConfig(options), '', 0, []);\n }\n }\n }\n const basicResult = printBasicValue(\n val,\n getPrintFunctionName(options),\n getEscapeRegex(options),\n getEscapeString(options)\n );\n if (basicResult !== null) {\n return basicResult;\n }\n return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n AsymmetricMatcher: _AsymmetricMatcher.default,\n DOMCollection: _DOMCollection.default,\n DOMElement: _DOMElement.default,\n Immutable: _Immutable.default,\n ReactElement: _ReactElement.default,\n ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\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\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import {Complex, DetailedError, Format} from '@qni/common'\nimport {range} from 'fp-ts/NonEmptyArray'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n itemSeparator?: string\n}\n\nconst DEFAULT_FORMAT_OPTIONS: FormatOptions = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n itemSeparator: ', ',\n}\n\nexport class Matrix {\n public width: number\n public height: number\n public buffer: Float64Array\n\n /**\n * Creates a new Matrix object from the given rows.\n */\n static rows(rows: Array>): Result {\n const height = rows.length\n if (height === 0) {\n return err(Error('rows is empty'))\n }\n const width = rows[0].length\n if (rows[0].length === 0) {\n return err(Error('rows[0] is empty'))\n }\n\n return Matrix.build(height, width, (row, col) => rows[row][col])\n }\n\n /**\n * Creates a column vector from the given elements.\n */\n static column_vector(...elements: Array): Result {\n return Matrix.build(elements.length, 1, row => elements[row])\n }\n\n /**\n * Builds a matrix with the specified width and height, using the provided\n * function to generate each element.\n */\n static build(\n height: number,\n width: number,\n matrixElementGenerator?: (row: number, col: number) => number | Complex,\n ): Result {\n const buf = new Float64Array(width * height * 2)\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const ri = (row * width + col) * 2 // real part index\n const ii = ri + 1 // imaginary part index\n\n let v: Complex\n if (matrixElementGenerator) {\n v = Complex.from(matrixElementGenerator(row, col))\n } else {\n v = Complex.from(0)\n }\n\n buf[ri] = v.real\n buf[ii] = v.imag\n }\n }\n\n return Matrix.create(width, height, buf)\n }\n\n /**\n * Return a row vector.\n *\n * @param elements - The elements of the vector\n * @returns A row vector (Matrix with 1 row)\n */\n static row(...elements: Array): Matrix {\n const res = Matrix.build(1, elements.length, (_row, col) => elements[col])\n return res._unsafeUnwrap()\n }\n\n /**\n * Returns a square matrix with the specified elements.\n *\n * @param elements - The elements of the matrix\n * @returns A result object with the generated square matrix or an error\n */\n static square(...elements: Array): Result {\n const n = Math.round(Math.sqrt(elements.length))\n if (n * n !== elements.length) {\n return err(Error('Matrix.square: non-square number of arguments'))\n }\n\n return Matrix.build(n, n, (row, col) => elements[row * n + col])\n }\n\n /**\n * Returns a matrix of the specified `width` and `height`.\n *\n * @param width - The width of the matrix\n * @param height - The height of the matrix\n * @param buffer - The buffer containing the matrix elements\n */\n static create(width: number, height: number, buffer: Float64Array): Result {\n if (width < 0) {\n return err(Error(`width(${width}) < 0`))\n }\n if (height < 0) {\n return err(Error(`height(${height}) < 0`))\n }\n if (width * height * 2 !== buffer.length) {\n return err(Error(`width(${width})*height(${height})*2 !== buffer.length(${buffer.length})`))\n }\n\n return ok(new Matrix(width, height, buffer))\n }\n\n constructor(width: number, height: number, buffer: Float64Array) {\n this.width = width\n this.height = height\n this.buffer = buffer\n\n this.plus = this.add // alias for add\n }\n\n /**\n * Returns element (col,row) of the matrix.\n *\n * @param col - The column index\n * @param row - The row index\n * @returns A result object with the element or an error\n */\n element(col: number, row: number): Result {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n return err(Error('Element out of range'))\n }\n\n const i = (this.width * row + col) * 2\n return ok(new Complex(this.buffer[i], this.buffer[i + 1]))\n }\n\n /**\n * Sets element (col,row) of the matrix.\n *\n * @param col - The column index\n * @param row - The row index\n * @param value - The value to set\n * @returns A result object with the matrix or an error\n */\n set(col: number, row: number, value: Complex): Result {\n if (col < 0 || row < 0 || col >= this.width || row >= this.height) {\n return err(Error('Element out of range'))\n }\n\n const i = (this.width * row + col) * 2\n this.buffer[i] = value.real\n this.buffer[i + 1] = value.imag\n\n return ok(this)\n }\n\n /**\n * Returns the `colIndex` column of the matrix.\n *\n * @param colIndex - The column index\n * @returns A result object with the column or an error\n */\n columnAt(colIndex: number): Result {\n if (colIndex < 0) {\n return err(Error('colIndex < 0'))\n }\n if (colIndex > this.width) {\n return err(Error('colIndex > this.width'))\n }\n\n const col = []\n for (let row = 0; row < this.height; row++) {\n col.push(this.element(colIndex, row)._unsafeUnwrap())\n }\n return ok(col)\n }\n\n /**\n * Returns the matrix as an array of rows.\n *\n * @returns An array of rows\n */\n rows(): Complex[][] {\n return range(0, this.height - 1).map(row =>\n range(0, this.width - 1).map(col => this.element(col, row)._unsafeUnwrap()),\n )\n }\n\n /**\n * Return true if the matrix is a Hermitian matrix.\n *\n * @param epsilon - The epsilon to use for comparison\n * @returns true if the matrix is a Hermitian matrix\n */\n isHermitian(epsilon = 0): boolean {\n if (this.width !== this.height) {\n return false\n }\n\n for (let col = 0; col < this.width; col++) {\n for (let row = 0; row < this.height; row++) {\n const i = (this.width * row + col) * 2\n const j = (this.width * col + row) * 2\n\n if (Math.abs(this.buffer[i] - this.buffer[j]) > epsilon) {\n return false\n }\n if (Math.abs(this.buffer[i + 1] + this.buffer[j + 1]) > epsilon) {\n return false\n }\n }\n }\n\n return true\n }\n\n /**\n * Returns a trace of the `Matrix`.\n *\n * @returns A `Complex` number representing the trace\n */\n trace(): Complex {\n let tr_r = 0\n let tr_i = 0\n const d = this.width * 2 + 2\n\n for (let i = 0; i < this.buffer.length; i += d) {\n tr_r += this.buffer[i]\n tr_i += this.buffer[i + 1]\n }\n\n return new Complex(tr_r, tr_i)\n }\n\n /**\n * Returns the adjoint matrix of the matrix.\n *\n * @returns The adjoint matrix\n */\n adjoint(): Matrix {\n const w = this.height\n const h = this.width\n const newBuf = new Float64Array(w * h * 2)\n\n for (let row = 0; row < h; row++) {\n for (let col = 0; col < w; col++) {\n const kIn = (col * this.width + row) * 2\n const kOut = (row * w + col) * 2\n\n newBuf[kOut] = this.buffer[kIn]\n newBuf[kOut + 1] = -this.buffer[kIn + 1]\n }\n }\n\n return new Matrix(w, h, newBuf)\n }\n\n /**\n * Matrix addition.\n *\n * @param other - The matrix to add\n * @returns A result object with the matrix or an error\n */\n add(other: Matrix): Result {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n if (other.width !== w || other.height !== h) {\n return err(Error('Matrix.add: incompatible sizes'))\n }\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] + b2[i]\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n plus = this.add.bind(this)\n\n /**\n * Matrix subtraction.\n *\n * @param other - The matrix to subtract\n * @returns A result object with the matrix or an error\n */\n sub(other: Matrix): Result {\n const {width: w, height: h, buffer: b1} = this\n const b2 = other.buffer\n if (other.width !== w || other.height !== h) {\n return err(Error('Matrix.sub: incompatible sizes'))\n }\n\n const newBuffer = new Float64Array(this.buffer.length)\n for (let i = 0; i < newBuffer.length; i++) {\n newBuffer[i] = b1[i] - b2[i]\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n /**\n * Matrix multiplication.\n *\n * @param other - The matrix to multiply\n */\n mult(other: Matrix | number | Complex): Result {\n return other instanceof Matrix ? this.multMatrix(other) : ok(this.multScalar(other))\n }\n\n /**\n * Returns the tensor product of matrices.\n *\n * @param other - The matrix to multiply\n */\n tensorProduct(other: Matrix): Matrix {\n const w1 = this.width\n const h1 = this.height\n const w2 = other.width\n const h2 = other.height\n const w = w1 * w2\n const h = h1 * h2\n const newBuffer = new Float64Array(w * h * 2)\n\n for (let r1 = 0; r1 < h1; r1++) {\n for (let r2 = 0; r2 < h2; r2++) {\n for (let c1 = 0; c1 < w1; c1++) {\n for (let c2 = 0; c2 < w2; c2++) {\n const k1 = (r1 * w1 + c1) * 2\n const k2 = (r2 * w2 + c2) * 2\n const k3 = ((r1 * h2 + r2) * w + (c1 * w2 + c2)) * 2\n const cr1 = this.buffer[k1]\n const ci1 = this.buffer[k1 + 1]\n const cr2 = other.buffer[k2]\n const ci2 = other.buffer[k2 + 1]\n const cr3 = cr1 * cr2 - ci1 * ci2\n const ci3 = cr1 * ci2 + ci1 * cr2\n\n newBuffer[k3] = cr3\n newBuffer[k3 + 1] = ci3\n }\n }\n }\n }\n\n return new Matrix(w, h, newBuffer)\n }\n\n /**\n * Returns true if the Matrix is equal to other.\n *\n * @param other - The other Matrix to compare with\n */\n eq(obj: Matrix | unknown): boolean {\n if (this === obj) return true\n if (!(obj instanceof Matrix)) return false\n\n const other = obj\n return (\n this.width === other.width &&\n this.height === other.height &&\n range(0, this.buffer.length - 1).every(i => this.buffer[i] === other.buffer[i])\n )\n }\n\n /**\n * Returns true if the Matrix is close to the value of other.\n *\n * @param other - The other Matrix to compare with\n */\n nearlyEq(other: Matrix | unknown, epsilon: number): boolean {\n return (\n other instanceof Matrix &&\n this.width === other.width &&\n this.height === other.height &&\n Math.sqrt(this.sub(other)._unsafeUnwrap().norm2()) <= epsilon\n )\n }\n\n format(options = DEFAULT_FORMAT_OPTIONS): string {\n const format = new Format(\n options.allowAbbreviation === undefined ? true : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n options.itemSeparator || ', ',\n )\n\n const data = this.rows()\n .map(row => row.map(e => e.format(format)).join(format.itemSeparator))\n .join(`}${format.itemSeparator}{`)\n\n return `{{${data}}}`\n }\n\n toString(): string {\n return this.format()\n }\n\n qubitDensityMatrixToBlochVector(): [number, number, number] {\n if (this.width !== 2 || this.height !== 2) {\n throw new DetailedError('Need a 2x2 density matrix.', this)\n }\n if (!this.isHermitian(0.01)) {\n throw new DetailedError('Density matrix should be Hermitian.', this)\n }\n if (!this.trace().nearlyEq(1, 0.01)) {\n throw new DetailedError('Density matrix should have unit trace.', this)\n }\n\n // Density matrix from bloch vector equation: M = 1/2 (I + v\u03C3)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [ar, ai, br, bi, cr, ci, dr, di] = this.buffer\n const x = cr + br\n const y = ci - bi\n const z = ar - dr\n return [x, y, z]\n }\n\n clone(): Matrix {\n return new Matrix(this.width, this.height, this.buffer.slice())\n }\n\n private norm2(): number {\n let t = 0\n for (const e of this.buffer) {\n t += e * e\n }\n return t\n }\n\n private multMatrix(other: Matrix): Result {\n if (this.width !== other.height) {\n return err(Error('Incompatible sizes.'))\n }\n\n const w = other.width\n const h = this.height\n const n = this.width\n const newBuffer = new Float64Array(w * h * 2)\n\n for (let r = 0; r < h; r++) {\n for (let c = 0; c < w; c++) {\n const k3 = (r * w + c) * 2\n for (let k = 0; k < n; k++) {\n const k1 = (r * n + k) * 2\n const k2 = (k * w + c) * 2\n const r1 = this.buffer[k1]\n const i1 = this.buffer[k1 + 1]\n const r2 = other.buffer[k2]\n const i2 = other.buffer[k2 + 1]\n const r3 = r1 * r2 - i1 * i2\n const i3 = r1 * i2 + r2 * i1\n newBuffer[k3] += r3\n newBuffer[k3 + 1] += i3\n }\n }\n }\n\n return ok(new Matrix(w, h, newBuffer))\n }\n\n private multScalar(v: number | Complex): Matrix {\n const newBuffer = new Float64Array(this.buffer.length)\n const sr = Complex.real(v)\n const si = Complex.imag(v)\n\n for (let i = 0; i < newBuffer.length; i += 2) {\n const vr = this.buffer[i]\n const vi = this.buffer[i + 1]\n newBuffer[i] = vr * sr - vi * si\n newBuffer[i + 1] = vr * si + vi * sr\n }\n\n return new Matrix(this.width, this.height, newBuffer)\n }\n}\n", "import {Complex, radian} from '@qni/common'\nimport {Matrix} from './matrix'\n\nconst i = Complex.I\nconst mi = i.neg()\n\n/**\n * Hadamard gate.\n *\n * ```\n * H = 1/\u221A2 * | 1 1 |\n * | 1 -1 |\n * ```\n */\nexport const H = safeSquareMatrix(1, 1, 1, -1).mult(Math.sqrt(0.5))._unsafeUnwrap()\n\n/**\n * Pauli X gate.\n *\n * ```\n * X = | 0 1 |\n * | 1 0 |\n * ```\n */\nexport const X = safeSquareMatrix(0, 1, 1, 0)\n\n/**\n * Pauli Y gate.\n *\n * ```\n * Y = | 0 -i |\n * | i 0 |\n * ```\n */\nexport const Y = safeSquareMatrix(0, mi, i, 0)\n\n/**\n * Pauli Z gate.\n *\n * ```\n * Z = | 1 0 |\n * | 0 -1 |\n * ```\n */\nexport const Z = safeSquareMatrix(1, 0, 0, -1)\n\n/**\n * S gate.\n *\n * ```\n * S = | 1 0 |\n * | 0 i |\n * ```\n */\nexport const S = safeSquareMatrix(1, 0, 0, i)\n\n/**\n * S\u2020 gate.\n *\n * ```\n * S\u2020 = | 1 0 |\n * | 0 -i |\n * ```\n */\nexport const SDagger = S.adjoint()\n\n/**\n * T gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(i\u03C0/4) |\n * ```\n */\nexport const T = safeSquareMatrix(1, 0, 0, i.times(Math.PI / 4).exp())\n\n/**\n * T\u2020 gate.\n *\n * ```\n * T = | 1 0 |\n * | 0 exp(-i\u03C0/4) |\n * ```\n */\nexport const TDagger = T.adjoint()\n\n/**\n * Phase (P) gate.\n *\n * ```\n * P(\u03C6) = | 1 0 |\n * | 0 exp(i\u03C6) |\n * ```\n */\nexport function PHASE(phi: string): Matrix {\n const \u03C6 = radian(phi)\n\n return safeSquareMatrix(1, 0, 0, i.times(\u03C6).exp())\n}\n\n/**\n * RNOT (\u221AX) gate.\n *\n * ```\n * \u221AX = 1/2 * | 1+i 1-i |\n * | 1-i 1+i |\n * ```\n */\nexport const RNOT = safeSquareMatrix(i.plus(1), mi.plus(1), mi.plus(1), i.plus(1)).mult(0.5)._unsafeUnwrap()\n\n/**\n * Rx gate.\n *\n * ```\n * Rx(\u03B8) = | cos(\u03B8/2) -isin(\u03B8/2) |\n * | -isin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Rx(\u03C0/2) = | cos(\u03C0/4) -isin(\u03C0/4) |\n * | -isin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -i |\n * | -i 1 |\n * ```\n */\nexport function RX(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return safeSquareMatrix(cos\u03B82, mi.times(sin\u03B82), mi.times(sin\u03B82), cos\u03B82)\n}\n\n/**\n * Ry gate.\n *\n * ```\n * Ry(\u03B8) = | cos(\u03B8/2) -sin(\u03B8/2) |\n * | sin(\u03B8/2) cos(\u03B8/2) |\n *\n * e.g.,\n * Ry(\u03C0/2) = | cos(\u03C0/4) -sin(\u03C0/4) |\n * | sin(\u03C0/4) cos(\u03C0/4) |\n *\n * = 1/\u221A2 * | 1 -1 |\n * | 1 1 |\n * ```\n */\nexport function RY(theta: string): Matrix {\n const \u03B8 = radian(theta)\n const cos\u03B82 = Math.cos(\u03B8 / 2)\n const sin\u03B82 = Math.sin(\u03B8 / 2)\n\n return safeSquareMatrix(cos\u03B82, -sin\u03B82, sin\u03B82, cos\u03B82)\n}\n\n/**\n * Rz gate.\n *\n * ```\n * Rz(\u03B8) = | exp(-i\u03B8/2) 0 |\n * | 0 exp(i\u03B8/2) |\n *\n * e.g.,\n * Rz(\u03C0/2) = | exp(-i\u03C0/4) 0 |\n * | 0 exp(i\u03C0/4) |\n *\n * = 1/\u221A2 * | 1-i 0 |\n * | 0 1+i |\n * ```\n */\nexport function RZ(theta: string): Matrix {\n const \u03B8 = radian(theta)\n\n return safeSquareMatrix(mi.times(\u03B8 / 2).exp(), 0, 0, i.times(\u03B8 / 2).exp())\n}\n\nfunction safeSquareMatrix(...elements: Array): Matrix {\n const res = Matrix.square(...elements)\n\n if (res.isOk()) {\n return res.value\n }\n\n throw res.error\n}\n", "import {Complex, DetailedError, Util} from '@qni/common'\nimport {Matrix} from './matrix'\nimport {ok, err, Result} from 'neverthrow'\n\nexport class StateVector {\n public matrix: Matrix\n public size: number\n public nqubit: number\n\n get bra(): Matrix {\n return this.matrix.adjoint()\n }\n\n get ket(): Matrix {\n return this.matrix\n }\n\n constructor(bits: string | Matrix) {\n if ('string' === typeof bits) {\n this.matrix = this.bitstringToMatrix(bits)\n } else {\n this.matrix = bits\n }\n\n this.size = this.matrix.height\n this.nqubit = Math.log2(this.size)\n }\n\n amplifier(index: number): Complex {\n return this.matrix.element(0, index)._unsafeUnwrap()\n }\n\n setAmplifier(index: number, value: Complex): Result {\n const res = this.matrix.set(0, index, value)\n if (res.isErr()) {\n return err(Error(res.error.message))\n }\n\n return ok(this)\n }\n\n blochVector(bit: number): [number, number, number] {\n return this.qubitDensityMatrix(bit).qubitDensityMatrixToBlochVector()\n }\n\n isApproximatelyEqualTo(other: StateVector | unknown, epsilon: number): boolean {\n return other instanceof StateVector && this.matrix.nearlyEq(other.matrix, epsilon)\n }\n\n timesQubitOperation(operation2x2: Matrix, qubitIndex: number, controlMask: number): Matrix {\n Util.need((controlMask & (1 << qubitIndex)) === 0, 'Matrix.timesQubitOperation: self-controlled')\n Util.need(operation2x2.width === 2 && operation2x2.height === 2, 'Matrix.timesQubitOperation: not 2x2')\n\n const {width: w, height: h, buffer: old} = this.matrix\n const [ar, ai, br, bi, cr, ci, dr, di] = operation2x2.buffer\n\n Util.need(h >= 2 << qubitIndex, 'Matrix.timesQubitOperation: qubit index out of range')\n\n const buf = new Float64Array(old)\n let i = 0\n for (let r = 0; r < h; r++) {\n const isControlled = ((controlMask & r) ^ controlMask) !== 0\n const qubitVal = (r & (1 << qubitIndex)) !== 0\n for (let c = 0; c < w; c++) {\n if (!isControlled && !qubitVal) {\n const j = i + (1 << qubitIndex) * 2 * w\n const xr = buf[i]\n const xi = buf[i + 1]\n const yr = buf[j]\n const yi = buf[j + 1]\n\n buf[i] = xr * ar - xi * ai + yr * br - yi * bi\n buf[i + 1] = xr * ai + xi * ar + yr * bi + yi * br\n buf[j] = xr * cr - xi * ci + yr * dr - yi * di\n buf[j + 1] = xr * ci + xi * cr + yr * di + yi * dr\n }\n i += 2\n }\n }\n\n this.matrix = new Matrix(w, h, buf)\n return this.matrix\n }\n\n toString(): string {\n return this.matrix.toString()\n }\n\n private bitstringToMatrix(bitString: string): Matrix {\n let paren = false\n let parenToken = ''\n const kets = []\n const invalidBitStringError = new DetailedError('Invalid StateVector bit string', bitString)\n\n for (const char of bitString.split('')) {\n switch (char) {\n case '0': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(1, 0)._unsafeUnwrap())\n break\n }\n case '1': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(0, 1)._unsafeUnwrap())\n break\n }\n case '+': {\n if (paren) throw invalidBitStringError\n kets.push(Matrix.column_vector(1, 1)._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n break\n }\n case '-': {\n if (paren) {\n parenToken += '-'\n } else {\n kets.push(Matrix.column_vector(1, -1)._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n }\n break\n }\n case 'i': {\n if (paren) {\n parenToken += 'i'\n } else {\n kets.push(Matrix.column_vector(1, new Complex(0, 1))._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n }\n break\n }\n case '(': {\n if (paren) throw invalidBitStringError\n paren = true\n parenToken = ''\n break\n }\n case ')': {\n if (!paren) throw invalidBitStringError\n if (parenToken !== '-i') throw invalidBitStringError\n kets.push(Matrix.column_vector(1, new Complex(0, -1))._unsafeUnwrap().mult(Math.sqrt(0.5))._unsafeUnwrap())\n paren = false\n break\n }\n default:\n throw invalidBitStringError\n }\n }\n\n if (kets.length === 0) throw invalidBitStringError\n return kets.reduce((result, each) => result.tensorProduct(each))\n }\n\n qubitDensityMatrix(qubitIndex: number): Matrix {\n if (qubitIndex < 0 || qubitIndex >= this.nqubit) {\n throw new DetailedError('Qubit index out of range', qubitIndex)\n }\n\n const traceBits = [...Array(Math.log2(this.matrix.height)).keys()].filter(each => each !== qubitIndex)\n const removeBits = (num: number, bits: number[]) => {\n return bits\n .sort()\n .reverse()\n .reduce((result, each) => {\n let mask = result >> (each + 1)\n mask = mask << each\n const right = ((1 << each) - 1) & result\n\n return mask | right\n }, num)\n }\n\n let densityMatrix = Matrix.build(2, 2)._unsafeUnwrap()\n\n for (let bra = 0; bra < this.matrix.height; bra++) {\n for (let ket = 0; ket < this.matrix.height; ket++) {\n const survived = traceBits.every(b => {\n return ((bra >> b) & 1) === ((ket >> b) & 1)\n })\n if (!survived) continue\n\n const amp = this.matrix\n .element(0, ket)\n ._unsafeUnwrap()\n .times(this.matrix.element(0, bra)._unsafeUnwrap().conjugate())\n if (amp.isEqualTo(0)) continue\n\n const ketMat =\n removeBits(ket, traceBits) === 0\n ? Matrix.column_vector(1, 0)._unsafeUnwrap()\n : Matrix.column_vector(0, 1)._unsafeUnwrap()\n const braMat = removeBits(bra, traceBits) === 0 ? Matrix.row(1, 0) : Matrix.row(0, 1)\n const ketBra = ketMat.mult(braMat)._unsafeUnwrap()\n\n densityMatrix = densityMatrix.add(ketBra.mult(amp)._unsafeUnwrap())._unsafeUnwrap()\n }\n }\n\n return densityMatrix\n }\n}\n", "export function round(n: number, decimal: number): number {\n return Math.round(n * Math.pow(10, decimal)) / Math.pow(10, decimal)\n}\n", "import {\n Complex,\n ResizeableSpan,\n SerializedBlochDisplayType,\n SerializedCircuitStep,\n SerializedControlGateType,\n SerializedHGateType,\n SerializedMeasurementGateType,\n SerializedPhaseGateType,\n SerializedQftDaggerGateType,\n SerializedQftGateType,\n SerializedRnotGateType,\n SerializedRxGateType,\n SerializedRyGateType,\n SerializedRzGateType,\n SerializedSDaggerGateType,\n SerializedSGateType,\n SerializedSpacerGateType,\n SerializedSwapGateType,\n SerializedTDaggerGateType,\n SerializedTGateType,\n SerializedWrite0GateType,\n SerializedWrite1GateType,\n SerializedXGateType,\n SerializedYGateType,\n SerializedZGateType,\n} from '@qni/common'\nimport {H, X, Y, Z, S, SDagger, T, TDagger, PHASE, RNOT, RX, RY, RZ} from './gate-matrices'\nimport {Matrix} from './matrix'\nimport {StateVector} from './state-vector'\nimport {round} from './util'\n\nexport class Simulator {\n public state: StateVector\n public blochVectors!: {[bit: number]: [number, number, number]}\n public measuredBits: {[bit: number]: number}\n public flags: {[key: string]: boolean}\n\n constructor(bits: string | StateVector) {\n if ('string' === typeof bits) {\n this.state = new StateVector(bits)\n } else {\n this.state = bits\n }\n\n this.measuredBits = {}\n this.flags = {}\n }\n\n runStep(operations: SerializedCircuitStep): Simulator {\n this.blochVectors = {}\n\n for (const each of operations) {\n switch (each.type) {\n case SerializedWrite0GateType:\n this.write(0, ...each.targets)\n break\n case SerializedWrite1GateType:\n this.write(1, ...each.targets)\n break\n case SerializedBlochDisplayType:\n for (const target of each.targets) {\n this.blochVectors[target] = this.state.blochVector(target)\n }\n break\n case SerializedHGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.ach(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.h(...each.targets)\n }\n break\n case SerializedXGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.x(...each.targets)\n }\n break\n case SerializedYGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acy(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.y(...each.targets)\n }\n break\n case SerializedZGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acz(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.z(...each.targets)\n }\n break\n case SerializedSpacerGateType:\n break\n case SerializedPhaseGateType: {\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acphase(each.controls || [], each.antiControls || [], each.angle, each.targets[0])\n } else {\n this.cphase(each.targets.slice(1), each.angle, each.targets[0])\n }\n break\n }\n case SerializedSGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acs(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.s(...each.targets)\n }\n break\n }\n case SerializedSDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acsDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.sDagger(...each.targets)\n }\n break\n }\n case SerializedTGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.act(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.t(...each.targets)\n }\n break\n }\n case SerializedTDaggerGateType: {\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.actDagger(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.tDagger(...each.targets)\n }\n break\n }\n case SerializedQftGateType:\n this.qft(each.span, ...each.targets)\n break\n case SerializedQftDaggerGateType:\n this.qftDagger(each.span, ...each.targets)\n break\n case SerializedControlGateType: {\n this.cz(each.targets.slice(1), each.targets[0])\n break\n }\n case SerializedSwapGateType: {\n // TODO: controls \u304C\u8907\u6570\u306E\u5834\u5408\u306B\u3082\u5BFE\u5FDC\n if (each.controls && each.controls.length === 1) {\n this.cswap(each.controls[0], each.targets[0], each.targets[1])\n } else {\n this.swap(each.targets[0], each.targets[1])\n }\n break\n }\n case SerializedRnotGateType:\n if (each.if && !this.flags[each.if]) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrnot(each.controls || [], each.antiControls || [], ...each.targets)\n } else {\n this.rnot(...each.targets)\n }\n break\n case SerializedRxGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrx(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rx(each.angle, ...each.targets)\n }\n break\n case SerializedRyGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acry(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.ry(each.angle, ...each.targets)\n }\n break\n case SerializedRzGateType:\n if (each.if && !this.flags[each.if]) break\n if (!each.angle) break\n if ((each.controls && each.controls.length > 0) || (each.antiControls && each.antiControls.length > 0)) {\n this.acrz(each.controls || [], each.antiControls || [], each.angle, ...each.targets)\n } else {\n this.rz(each.angle, ...each.targets)\n }\n break\n case SerializedMeasurementGateType:\n for (const target of each.targets) {\n this.measure(target)\n if (each.flag) this.flags[each.flag] = this.measuredBits[target] === 1\n }\n break\n default:\n throw new Error('Unknown instruction')\n }\n }\n\n return this\n }\n\n write(value: number, ...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = round(this.pZero(t), 5)\n\n if ((value === 0 && pZero === 0) || (value === 1 && pZero === 1)) {\n this.x(t)\n }\n }\n return this\n }\n\n h(...targets: number[]): Simulator {\n this.u(H, ...targets)\n return this\n }\n\n ch(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, H, ...targets)\n return this\n }\n\n ach(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, H, ...targets)\n this.x(...antiControls)\n return this\n }\n\n x(...targets: number[]): Simulator {\n this.u(X, ...targets)\n return this\n }\n\n cnot(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, X, ...targets)\n\n return this\n }\n\n acnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, X, ...targets)\n this.x(...antiControls)\n\n return this\n }\n\n y(...targets: number[]): Simulator {\n this.u(Y, ...targets)\n return this\n }\n\n cy(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Y, ...targets)\n return this\n }\n\n acy(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Y, ...targets)\n this.x(...antiControls)\n return this\n }\n\n z(...targets: number[]): Simulator {\n this.u(Z, ...targets)\n return this\n }\n\n cz(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, Z, ...targets)\n return this\n }\n\n acz(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, Z, ...targets)\n this.x(...antiControls)\n return this\n }\n\n phase(phi: string, ...targets: number[]): Simulator {\n this.u(PHASE(phi), ...targets)\n return this\n }\n\n cphase(controls: number | number[], phi: string, ...targets: number[]): Simulator {\n this.cu(controls, PHASE(phi), ...targets)\n return this\n }\n\n acphase(controls: number | number[], antiControls: number[], phi: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, PHASE(phi), ...targets)\n this.x(...antiControls)\n return this\n }\n\n s(...targets: number[]): Simulator {\n this.u(S, ...targets)\n return this\n }\n\n acs(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, S, ...targets)\n this.x(...antiControls)\n return this\n }\n\n sDagger(...targets: number[]): Simulator {\n this.u(SDagger, ...targets)\n return this\n }\n\n acsDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, SDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n t(...targets: number[]): Simulator {\n this.u(T, ...targets)\n return this\n }\n\n ct(controls: number | number[], ...targets: number[]): Simulator {\n this.cu(controls, T, ...targets)\n return this\n }\n\n act(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, T, ...targets)\n this.x(...antiControls)\n return this\n }\n\n tDagger(...targets: number[]): Simulator {\n this.u(TDagger, ...targets)\n return this\n }\n\n actDagger(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, TDagger, ...targets)\n this.x(...antiControls)\n return this\n }\n\n swap(target0: number, target1: number): Simulator {\n this.cnot(target0, target1).cnot(target1, target0).cnot(target0, target1)\n return this\n }\n\n cswap(control: number, target0: number, target1: number): Simulator {\n this.cnot([control, target0], target1).cnot([control, target1], target0).cnot([control, target0], target1)\n return this\n }\n\n rnot(...targets: number[]): Simulator {\n this.u(RNOT, ...targets)\n return this\n }\n\n crnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n acrnot(controls: number | number[], antiControls: number[], ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RNOT, ...targets)\n this.x(...antiControls)\n return this\n }\n\n rx(theta: string, ...targets: number[]): Simulator {\n this.u(RX(theta), ...targets)\n return this\n }\n\n acrx(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RX(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n crx(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RX(theta), ...targets)\n return this\n }\n\n ry(theta: string, ...targets: number[]): Simulator {\n this.u(RY(theta), ...targets)\n return this\n }\n\n cry(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RY(theta), ...targets)\n return this\n }\n\n acry(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RY(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n rz(theta: string, ...targets: number[]): Simulator {\n this.u(RZ(theta), ...targets)\n return this\n }\n\n crz(controls: number | number[], theta: string, ...targets: number[]): Simulator {\n this.cu(controls, RZ(theta), ...targets)\n return this\n }\n\n acrz(controls: number | number[], antiControls: number[], theta: string, ...targets: number[]): Simulator {\n let allControls\n if (typeof controls === 'number') {\n allControls = [controls].concat(antiControls)\n } else {\n allControls = controls.concat(antiControls)\n }\n\n this.x(...antiControls)\n this.cu(allControls, RZ(theta), ...targets)\n this.x(...antiControls)\n return this\n }\n\n qft(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.swap(target, target + 1)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .h(target + 1)\n break\n }\n case 3: {\n this.swap(target, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .h(target + 2)\n break\n }\n case 4: {\n this.swap(target, target + 3)\n .swap(target + 1, target + 2)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .h(target + 3)\n break\n }\n case 5: {\n this.swap(target, target + 4)\n .swap(target + 1, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .h(target + 4)\n break\n }\n case 6: {\n this.swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .h(target + 5)\n break\n }\n case 7: {\n this.swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .h(target + 6)\n break\n }\n case 8: {\n this.swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .h(target + 7)\n break\n }\n case 9: {\n this.swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .h(target + 8)\n break\n }\n case 10: {\n this.swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .h(target + 9)\n break\n }\n case 11: {\n this.swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .h(target + 10)\n break\n }\n case 12: {\n this.swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .h(target + 11)\n break\n }\n case 13: {\n this.swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .h(target + 12)\n break\n }\n case 14: {\n this.swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .h(target + 13)\n break\n }\n case 15: {\n this.swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .h(target + 14)\n break\n }\n case 16: {\n this.swap(target, target + 15)\n .swap(target + 1, target + 14)\n .swap(target + 2, target + 13)\n .swap(target + 3, target + 12)\n .swap(target + 4, target + 11)\n .swap(target + 5, target + 10)\n .swap(target + 6, target + 9)\n .swap(target + 7, target + 8)\n .h(target)\n .cphase(target + 1, '\u03C0/2', target)\n .cphase(target + 2, '\u03C0/4', target)\n .cphase(target + 3, '\u03C0/8', target)\n .cphase(target + 4, '\u03C0/16', target)\n .cphase(target + 5, '\u03C0/32', target)\n .cphase(target + 6, '\u03C0/64', target)\n .cphase(target + 7, '\u03C0/128', target)\n .cphase(target + 8, '\u03C0/256', target)\n .cphase(target + 9, '\u03C0/512', target)\n .cphase(target + 10, '\u03C0/1024', target)\n .cphase(target + 11, '\u03C0/2048', target)\n .cphase(target + 12, '\u03C0/4096', target)\n .cphase(target + 13, '\u03C0/8192', target)\n .cphase(target + 14, '\u03C0/16384', target)\n .cphase(target + 15, '\u03C0/32768', target)\n .h(target + 1)\n .cphase(target + 2, '\u03C0/2', target + 1)\n .cphase(target + 3, '\u03C0/4', target + 1)\n .cphase(target + 4, '\u03C0/8', target + 1)\n .cphase(target + 5, '\u03C0/16', target + 1)\n .cphase(target + 6, '\u03C0/32', target + 1)\n .cphase(target + 7, '\u03C0/64', target + 1)\n .cphase(target + 8, '\u03C0/128', target + 1)\n .cphase(target + 9, '\u03C0/256', target + 1)\n .cphase(target + 10, '\u03C0/512', target + 1)\n .cphase(target + 11, '\u03C0/1024', target + 1)\n .cphase(target + 12, '\u03C0/2048', target + 1)\n .cphase(target + 13, '\u03C0/4096', target + 1)\n .cphase(target + 14, '\u03C0/8192', target + 1)\n .cphase(target + 15, '\u03C0/16384', target + 1)\n .h(target + 2)\n .cphase(target + 3, '\u03C0/2', target + 2)\n .cphase(target + 4, '\u03C0/4', target + 2)\n .cphase(target + 5, '\u03C0/8', target + 2)\n .cphase(target + 6, '\u03C0/16', target + 2)\n .cphase(target + 7, '\u03C0/32', target + 2)\n .cphase(target + 8, '\u03C0/64', target + 2)\n .cphase(target + 9, '\u03C0/128', target + 2)\n .cphase(target + 10, '\u03C0/256', target + 2)\n .cphase(target + 11, '\u03C0/512', target + 2)\n .cphase(target + 12, '\u03C0/1024', target + 2)\n .cphase(target + 13, '\u03C0/2048', target + 2)\n .cphase(target + 14, '\u03C0/4096', target + 2)\n .cphase(target + 15, '\u03C0/8192', target + 2)\n .h(target + 3)\n .cphase(target + 4, '\u03C0/2', target + 3)\n .cphase(target + 5, '\u03C0/4', target + 3)\n .cphase(target + 6, '\u03C0/8', target + 3)\n .cphase(target + 7, '\u03C0/16', target + 3)\n .cphase(target + 8, '\u03C0/32', target + 3)\n .cphase(target + 9, '\u03C0/64', target + 3)\n .cphase(target + 10, '\u03C0/128', target + 3)\n .cphase(target + 11, '\u03C0/256', target + 3)\n .cphase(target + 12, '\u03C0/512', target + 3)\n .cphase(target + 13, '\u03C0/1024', target + 3)\n .cphase(target + 14, '\u03C0/2048', target + 3)\n .cphase(target + 15, '\u03C0/4096', target + 3)\n .h(target + 4)\n .cphase(target + 5, '\u03C0/2', target + 4)\n .cphase(target + 6, '\u03C0/4', target + 4)\n .cphase(target + 7, '\u03C0/8', target + 4)\n .cphase(target + 8, '\u03C0/16', target + 4)\n .cphase(target + 9, '\u03C0/32', target + 4)\n .cphase(target + 10, '\u03C0/64', target + 4)\n .cphase(target + 11, '\u03C0/128', target + 4)\n .cphase(target + 12, '\u03C0/256', target + 4)\n .cphase(target + 13, '\u03C0/512', target + 4)\n .cphase(target + 14, '\u03C0/1024', target + 4)\n .cphase(target + 15, '\u03C0/2048', target + 4)\n .h(target + 5)\n .cphase(target + 6, '\u03C0/2', target + 5)\n .cphase(target + 7, '\u03C0/4', target + 5)\n .cphase(target + 8, '\u03C0/8', target + 5)\n .cphase(target + 9, '\u03C0/16', target + 5)\n .cphase(target + 10, '\u03C0/32', target + 5)\n .cphase(target + 11, '\u03C0/64', target + 5)\n .cphase(target + 12, '\u03C0/128', target + 5)\n .cphase(target + 13, '\u03C0/256', target + 5)\n .cphase(target + 14, '\u03C0/512', target + 5)\n .cphase(target + 15, '\u03C0/1024', target + 5)\n .h(target + 6)\n .cphase(target + 7, '\u03C0/2', target + 6)\n .cphase(target + 8, '\u03C0/4', target + 6)\n .cphase(target + 9, '\u03C0/8', target + 6)\n .cphase(target + 10, '\u03C0/16', target + 6)\n .cphase(target + 11, '\u03C0/32', target + 6)\n .cphase(target + 12, '\u03C0/64', target + 6)\n .cphase(target + 13, '\u03C0/128', target + 6)\n .cphase(target + 14, '\u03C0/256', target + 6)\n .cphase(target + 15, '\u03C0/512', target + 6)\n .h(target + 7)\n .cphase(target + 8, '\u03C0/2', target + 7)\n .cphase(target + 9, '\u03C0/4', target + 7)\n .cphase(target + 10, '\u03C0/8', target + 7)\n .cphase(target + 11, '\u03C0/16', target + 7)\n .cphase(target + 12, '\u03C0/32', target + 7)\n .cphase(target + 13, '\u03C0/64', target + 7)\n .cphase(target + 14, '\u03C0/128', target + 7)\n .cphase(target + 15, '\u03C0/256', target + 7)\n .h(target + 8)\n .cphase(target + 9, '\u03C0/2', target + 8)\n .cphase(target + 10, '\u03C0/4', target + 8)\n .cphase(target + 11, '\u03C0/8', target + 8)\n .cphase(target + 12, '\u03C0/16', target + 8)\n .cphase(target + 13, '\u03C0/32', target + 8)\n .cphase(target + 14, '\u03C0/64', target + 8)\n .cphase(target + 15, '\u03C0/128', target + 8)\n .h(target + 9)\n .cphase(target + 10, '\u03C0/2', target + 8)\n .cphase(target + 11, '\u03C0/4', target + 8)\n .cphase(target + 12, '\u03C0/8', target + 8)\n .cphase(target + 13, '\u03C0/16', target + 8)\n .cphase(target + 14, '\u03C0/32', target + 8)\n .cphase(target + 15, '\u03C0/64', target + 8)\n .h(target + 10)\n .cphase(target + 11, '\u03C0/2', target + 9)\n .cphase(target + 12, '\u03C0/4', target + 9)\n .cphase(target + 13, '\u03C0/8', target + 9)\n .cphase(target + 14, '\u03C0/16', target + 9)\n .cphase(target + 15, '\u03C0/32', target + 9)\n .h(target + 11)\n .cphase(target + 13, '\u03C0/2', target + 10)\n .cphase(target + 14, '\u03C0/4', target + 10)\n .cphase(target + 15, '\u03C0/8', target + 10)\n .cphase(target + 16, '\u03C0/16', target + 10)\n .h(target + 12)\n .cphase(target + 14, '\u03C0/2', target + 11)\n .cphase(target + 15, '\u03C0/4', target + 11)\n .cphase(target + 16, '\u03C0/8', target + 11)\n .h(target + 13)\n .cphase(target + 15, '\u03C0/2', target + 12)\n .cphase(target + 16, '\u03C0/4', target + 12)\n .h(target + 14)\n .cphase(target + 16, '\u03C0/2', target + 13)\n .h(target + 15)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n qftDagger(span: ResizeableSpan, ...targets: number[]): Simulator {\n for (const each of targets) {\n this.qftDaggerSingleTargetBit(span, each)\n }\n return this\n }\n\n private qftDaggerSingleTargetBit(span: ResizeableSpan, target: number): Simulator {\n switch (span) {\n case 1: {\n this.h(target)\n break\n }\n case 2: {\n this.h(target + 1)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 1)\n break\n }\n case 3: {\n this.h(target + 2)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 2)\n break\n }\n case 4: {\n this.h(target + 3)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 3)\n .swap(target + 1, target + 2)\n break\n }\n case 5: {\n this.h(target + 4)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 4)\n .swap(target + 1, target + 3)\n break\n }\n case 6: {\n this.h(target + 5)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 5)\n .swap(target + 1, target + 4)\n .swap(target + 2, target + 3)\n break\n }\n case 7: {\n this.h(target + 6)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 6)\n .swap(target + 1, target + 5)\n .swap(target + 2, target + 4)\n break\n }\n case 8: {\n this.h(target + 7)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 7)\n .swap(target + 1, target + 6)\n .swap(target + 2, target + 5)\n .swap(target + 3, target + 4)\n break\n }\n case 9: {\n this.h(target + 8)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 8)\n .swap(target + 1, target + 7)\n .swap(target + 2, target + 6)\n .swap(target + 3, target + 5)\n break\n }\n case 10: {\n this.h(target + 9)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 9)\n .swap(target + 1, target + 8)\n .swap(target + 2, target + 7)\n .swap(target + 3, target + 6)\n .swap(target + 4, target + 5)\n break\n }\n case 11: {\n this.h(target + 10)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 10)\n .swap(target + 1, target + 9)\n .swap(target + 2, target + 8)\n .swap(target + 3, target + 7)\n .swap(target + 4, target + 6)\n break\n }\n case 12: {\n this.h(target + 11)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 11)\n .swap(target + 1, target + 10)\n .swap(target + 2, target + 9)\n .swap(target + 3, target + 8)\n .swap(target + 4, target + 7)\n .swap(target + 5, target + 6)\n break\n }\n case 13: {\n this.h(target + 12)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 12)\n .swap(target + 1, target + 11)\n .swap(target + 2, target + 10)\n .swap(target + 3, target + 9)\n .swap(target + 4, target + 8)\n .swap(target + 5, target + 7)\n break\n }\n case 14: {\n this.h(target + 13)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target)\n .h(target + 10)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 13)\n .swap(target + 1, target + 12)\n .swap(target + 2, target + 11)\n .swap(target + 3, target + 10)\n .swap(target + 4, target + 9)\n .swap(target + 5, target + 8)\n .swap(target + 6, target + 7)\n break\n }\n case 15: {\n this.h(target + 14)\n .cphase(target + 14, '-\u03C0/2', target + 13)\n .h(target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target, target + 14)\n .swap(target + 1, target + 13)\n .swap(target + 2, target + 12)\n .swap(target + 3, target + 11)\n .swap(target + 4, target + 10)\n .swap(target + 5, target + 9)\n .swap(target + 6, target + 8)\n break\n }\n case 16: {\n this.h(target + 15)\n .cphase(target + 15, '-\u03C0/2', target + 14)\n .h(target + 14)\n .cphase(target + 15, '-\u03C0/4', target + 13)\n .cphase(target + 14, '-\u03C0/4', target + 13)\n .h(target + 13)\n .cphase(target + 15, '-\u03C0/8', target + 12)\n .cphase(target + 14, '-\u03C0/4', target + 12)\n .cphase(target + 13, '-\u03C0/2', target + 12)\n .h(target + 12)\n .cphase(target + 15, '-\u03C0/16', target + 11)\n .cphase(target + 14, '-\u03C0/8', target + 11)\n .cphase(target + 13, '-\u03C0/4', target + 11)\n .cphase(target + 12, '-\u03C0/2', target + 11)\n .h(target + 11)\n .cphase(target + 15, '-\u03C0/32', target + 10)\n .cphase(target + 14, '-\u03C0/16', target + 10)\n .cphase(target + 13, '-\u03C0/8', target + 10)\n .cphase(target + 12, '-\u03C0/4', target + 10)\n .cphase(target + 11, '-\u03C0/2', target + 10)\n .h(target + 10)\n .cphase(target + 15, '-\u03C0/64', target + 9)\n .cphase(target + 14, '-\u03C0/32', target + 9)\n .cphase(target + 13, '-\u03C0/16', target + 9)\n .cphase(target + 12, '-\u03C0/8', target + 9)\n .cphase(target + 11, '-\u03C0/4', target + 9)\n .cphase(target + 10, '-\u03C0/2', target + 9)\n .h(target + 9)\n .cphase(target + 15, '-\u03C0/128', target + 8)\n .cphase(target + 14, '-\u03C0/64', target + 8)\n .cphase(target + 13, '-\u03C0/32', target + 8)\n .cphase(target + 12, '-\u03C0/16', target + 8)\n .cphase(target + 11, '-\u03C0/8', target + 8)\n .cphase(target + 10, '-\u03C0/4', target + 8)\n .cphase(target + 9, '-\u03C0/2', target + 8)\n .h(target + 8)\n .cphase(target + 15, '-\u03C0/256', target + 7)\n .cphase(target + 14, '-\u03C0/128', target + 7)\n .cphase(target + 13, '-\u03C0/64', target + 7)\n .cphase(target + 12, '-\u03C0/32', target + 7)\n .cphase(target + 11, '-\u03C0/16', target + 7)\n .cphase(target + 10, '-\u03C0/8', target + 7)\n .cphase(target + 9, '-\u03C0/4', target + 7)\n .cphase(target + 8, '-\u03C0/2', target + 7)\n .h(target + 7)\n .cphase(target + 15, '-\u03C0/512', target + 6)\n .cphase(target + 14, '-\u03C0/256', target + 6)\n .cphase(target + 13, '-\u03C0/128', target + 6)\n .cphase(target + 12, '-\u03C0/64', target + 6)\n .cphase(target + 11, '-\u03C0/32', target + 6)\n .cphase(target + 10, '-\u03C0/16', target + 6)\n .cphase(target + 9, '-\u03C0/8', target + 6)\n .cphase(target + 8, '-\u03C0/4', target + 6)\n .cphase(target + 7, '-\u03C0/2', target + 6)\n .h(target + 6)\n .cphase(target + 15, '-\u03C0/1024', target + 5)\n .cphase(target + 14, '-\u03C0/512', target + 5)\n .cphase(target + 13, '-\u03C0/256', target + 5)\n .cphase(target + 12, '-\u03C0/128', target + 5)\n .cphase(target + 11, '-\u03C0/64', target + 5)\n .cphase(target + 10, '-\u03C0/32', target + 5)\n .cphase(target + 9, '-\u03C0/16', target + 5)\n .cphase(target + 8, '-\u03C0/8', target + 5)\n .cphase(target + 7, '-\u03C0/4', target + 5)\n .cphase(target + 6, '-\u03C0/2', target + 5)\n .h(target + 5)\n .cphase(target + 15, '-\u03C0/2048', target + 4)\n .cphase(target + 14, '-\u03C0/1024', target + 4)\n .cphase(target + 13, '-\u03C0/512', target + 4)\n .cphase(target + 12, '-\u03C0/256', target + 4)\n .cphase(target + 11, '-\u03C0/128', target + 4)\n .cphase(target + 10, '-\u03C0/64', target + 4)\n .cphase(target + 9, '-\u03C0/32', target + 4)\n .cphase(target + 8, '-\u03C0/16', target + 4)\n .cphase(target + 7, '-\u03C0/8', target + 4)\n .cphase(target + 6, '-\u03C0/4', target + 4)\n .cphase(target + 5, '-\u03C0/2', target + 4)\n .h(target + 4)\n .cphase(target + 15, '-\u03C0/4096', target + 3)\n .cphase(target + 14, '-\u03C0/2048', target + 3)\n .cphase(target + 13, '-\u03C0/1024', target + 3)\n .cphase(target + 12, '-\u03C0/512', target + 3)\n .cphase(target + 11, '-\u03C0/256', target + 3)\n .cphase(target + 10, '-\u03C0/128', target + 3)\n .cphase(target + 9, '-\u03C0/64', target + 3)\n .cphase(target + 8, '-\u03C0/32', target + 3)\n .cphase(target + 7, '-\u03C0/16', target + 3)\n .cphase(target + 6, '-\u03C0/8', target + 3)\n .cphase(target + 5, '-\u03C0/4', target + 3)\n .cphase(target + 4, '-\u03C0/2', target + 3)\n .h(target + 3)\n .cphase(target + 15, '-\u03C0/8192', target + 2)\n .cphase(target + 14, '-\u03C0/4096', target + 2)\n .cphase(target + 13, '-\u03C0/2048', target + 2)\n .cphase(target + 12, '-\u03C0/1024', target + 2)\n .cphase(target + 11, '-\u03C0/512', target + 2)\n .cphase(target + 10, '-\u03C0/256', target + 2)\n .cphase(target + 9, '-\u03C0/128', target + 2)\n .cphase(target + 8, '-\u03C0/64', target + 2)\n .cphase(target + 7, '-\u03C0/32', target + 2)\n .cphase(target + 6, '-\u03C0/16', target + 2)\n .cphase(target + 5, '-\u03C0/8', target + 2)\n .cphase(target + 4, '-\u03C0/4', target + 2)\n .cphase(target + 3, '-\u03C0/2', target + 2)\n .h(target + 2)\n .cphase(target + 15, '-\u03C0/16384', target + 1)\n .cphase(target + 14, '-\u03C0/8192', target + 1)\n .cphase(target + 13, '-\u03C0/4096', target + 1)\n .cphase(target + 12, '-\u03C0/2048', target + 1)\n .cphase(target + 11, '-\u03C0/1024', target + 1)\n .cphase(target + 10, '-\u03C0/512', target + 1)\n .cphase(target + 9, '-\u03C0/256', target + 1)\n .cphase(target + 8, '-\u03C0/128', target + 1)\n .cphase(target + 7, '-\u03C0/64', target + 1)\n .cphase(target + 6, '-\u03C0/32', target + 1)\n .cphase(target + 5, '-\u03C0/16', target + 1)\n .cphase(target + 4, '-\u03C0/8', target + 1)\n .cphase(target + 3, '-\u03C0/4', target + 1)\n .cphase(target + 2, '-\u03C0/2', target + 1)\n .h(target + 1)\n .cphase(target + 15, '-\u03C0/32768', target)\n .cphase(target + 14, '-\u03C0/16384', target)\n .cphase(target + 13, '-\u03C0/8192', target)\n .cphase(target + 12, '-\u03C0/4096', target)\n .cphase(target + 11, '-\u03C0/2048', target)\n .cphase(target + 10, '-\u03C0/1024', target)\n .cphase(target + 9, '-\u03C0/512', target)\n .cphase(target + 8, '-\u03C0/256', target)\n .cphase(target + 7, '-\u03C0/128', target)\n .cphase(target + 6, '-\u03C0/64', target)\n .cphase(target + 5, '-\u03C0/32', target)\n .cphase(target + 4, '-\u03C0/16', target)\n .cphase(target + 3, '-\u03C0/8', target)\n .cphase(target + 2, '-\u03C0/4', target)\n .cphase(target + 1, '-\u03C0/2', target)\n .h(target)\n .swap(target + 1, target + 15)\n .swap(target + 2, target + 14)\n .swap(target + 3, target + 13)\n .swap(target + 4, target + 12)\n .swap(target + 5, target + 11)\n .swap(target + 6, target + 10)\n .swap(target + 7, target + 9)\n .swap(target + 8, target + 8)\n .swap(target + 9, target + 7)\n .swap(target + 10, target + 6)\n break\n }\n default: {\n throw new Error(`Invalid span: ${span}`)\n }\n }\n return this\n }\n\n measure(...targets: number[]): Simulator {\n for (const t of targets) {\n const pZero = this.pZero(t)\n const rand = Math.random()\n\n if (rand <= pZero) {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) !== 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 0\n } else {\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << t)) === 0) this.state.setAmplifier(bit, Complex.ZERO)\n const res = this.state.amplifier(bit).div(Math.sqrt(1 - pZero))\n if (res.isOk()) {\n this.state.setAmplifier(bit, res.value)\n } else {\n throw Error(res.error.message)\n }\n }\n this.measuredBits[t] = 1\n }\n }\n return this\n }\n\n amplitudes(): Complex[] {\n return this.state.matrix.columnAt(0)._unsafeUnwrap()\n }\n\n private u(u: Matrix, ...targets: number[]): void {\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, 0)\n }\n }\n\n private cu(controls: number | number[], u: Matrix, ...targets: number[]): void {\n const cs = typeof controls === 'number' ? [controls] : controls\n const controlMask = cs.reduce((result, each) => {\n return result | (1 << each)\n }, 0)\n\n for (const t of targets) {\n this.state.timesQubitOperation(u, t, controlMask)\n }\n }\n\n private pZero(target: number): number {\n let p = 0\n for (let bit = 0; bit < 1 << this.state.nqubit; bit++) {\n if ((bit & (1 << target)) === 0) {\n p += Math.pow(this.state.amplifier(bit).abs(), 2)\n }\n }\n return p\n }\n}\n", "import Fraction from 'fraction.js'\n\nexport function radian(angle: string): number {\n const coefficient = piCoefficient(angle)\n const fraction = new Fraction(coefficient).valueOf()\n\n return fraction * Math.PI\n}\n\n// TODO: neverthrow \u5316\nexport function angleDenominator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return 1\n } else if (split.length === 2) {\n return parseInt(split[1])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\n// TODO: neverthrow \u5316\nexport function angleNumerator(angle: string): number {\n const coefficient = piCoefficient(angle)\n const split = coefficient.split('/')\n\n if (split.length === 1) {\n return parseInt(split[0])\n } else if (split.length === 2) {\n return parseInt(split[0])\n } else {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n\nexport function isAngleLessThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() < new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isAngleGreaterThan(angle: string, other: string): boolean {\n return new Fraction(piCoefficient(angle)).valueOf() > new Fraction(piCoefficient(other)).valueOf()\n}\n\nexport function isValidAngle(angle: string): boolean {\n if (angle === '0') return true\n if (!/\u03C0/.test(angle)) return false\n\n try {\n const coefficient = piCoefficient(angle)\n new Fraction(coefficient).valueOf()\n\n return true\n } catch (e) {\n return false\n }\n}\n\nexport function piCoefficient(angle: string): string {\n return angle.replace(/(\\d+)\u03C0/g, '$1').replace(/\u03C0/g, '1')\n}\n\nexport function reduceAngle(angle: string): string {\n try {\n const coefficient = piCoefficient(angle)\n const reduced = new Fraction(coefficient).toFraction()\n const split = reduced.split('/')\n\n let numerator: string\n if (split[0] === '0') {\n numerator = '0'\n } else if (split[0] === '1') {\n numerator = `\u03C0`\n } else if (split[0] === '-1') {\n numerator = `-\u03C0`\n } else {\n numerator = `${split[0]}\u03C0`\n }\n\n if (split.length === 1) {\n return numerator\n } else {\n return `${numerator}/${split[1]}`\n }\n } catch (e) {\n throw new Error(`Failed to parse angle '${angle}'`)\n }\n}\n", "type UnicodeFraction = {character: string; ref: string; value: number}\n\n/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const UNICODE_FRACTIONS = [\n {character: '\\u00BD', ref: '\u00BD', expanded: '1/2', value: 1 / 2},\n {character: '\\u00BC', ref: '\u00BC', expanded: '1/4', value: 1 / 4},\n {character: '\\u00BE', ref: '\u00BE', expanded: '3/4', value: 3 / 4},\n {character: '\\u2153', ref: '\u2153', expanded: '1/3', value: 1 / 3},\n {character: '\\u2154', ref: '\u2154', expanded: '2/3', value: 2 / 3},\n {character: '\\u2155', ref: '\u2155', expanded: '1/5', value: 1 / 5},\n {character: '\\u2156', ref: '\u2156', expanded: '2/5', value: 2 / 5},\n {character: '\\u2157', ref: '\u2157', expanded: '3/5', value: 3 / 5},\n {character: '\\u2158', ref: '\u2158', expanded: '4/5', value: 4 / 5},\n {character: '\\u2159', ref: '\u2159', expanded: '1/6', value: 1 / 6},\n {character: '\\u215A', ref: '\u215A', expanded: '5/6', value: 5 / 6},\n {character: '\\u2150', ref: '\u2150', expanded: '1/7', value: 1 / 7},\n {character: '\\u215B', ref: '\u215B', expanded: '1/8', value: 1 / 8},\n {character: '\\u215C', ref: '\u215C', expanded: '3/8', value: 3 / 8},\n {character: '\\u215D', ref: '\u215D', expanded: '5/8', value: 5 / 8},\n {character: '\\u215E', ref: '\u215E', expanded: '7/8', value: 7 / 8},\n {character: '\\u2151', ref: '\u2151', expanded: '1/9', value: 1 / 9},\n {character: '\\u2152', ref: '\u2152', expanded: '1/10', value: 1 / 10},\n]\n\n/**\n * Stores formatting options, for determining what string output should look\n * like.\n */\nexport class Format {\n /**\n * Returns an approximated result, but with the constraint that when it\n * changes slightly it should \"look the same\". (It should look good when\n * varying and animated.)\n */\n static readonly CONSISTENT = new Format(false, 0, 2, ', ')\n\n /**\n * Returns an accurate result, but favoring looking nice over being small.\n */\n static readonly EXACT = new Format(true, 0, undefined, ', ')\n\n /**\n * Returns an accurate result, favoring being small over looking nice.\n */\n static readonly MINIFIED = new Format(true, 0, undefined, ',')\n\n /**\n * Returns an approximated result, strongly favoring looking nice.\n */\n static readonly SIMPLIFIED = new Format(true, 0.0005, 3, ', ')\n\n /**\n * Parses the given text into a float. Works for text created by\n * [[formatFloat]].\n */\n static parseFloat(text: string): number {\n if (text.length === 0) {\n throw new Error(`Not a number: '${text}'`)\n }\n if (text[0] === '-') {\n return -Format.parseFloat(text.substr(1))\n }\n if (text[0] === '\\u221A') {\n return Math.sqrt(Format.parseFloat(text.substr(1)))\n }\n\n const fraction = Format.matchUnicodeFraction(e => e.character === text)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const result = parseFloat(text)\n if (isNaN(result)) {\n throw new Error(`Not a number: '${text}'`)\n }\n return result\n }\n\n /**\n * Corrects a value to a nearby simple fraction or root thereof, such as\n * sqrt(1/2), so it can be printed compactly.\n *\n * @param value The value to round.\n * @param epsilon The maximum offset error introduced by the rounding.\n */\n static simplifyByRounding(value: number, epsilon: number): number {\n if (value < 0) {\n return -Format.simplifyByRounding(-value, epsilon)\n }\n\n const r = value % 1\n if (r <= epsilon || 1 - r <= epsilon) {\n return Math.round(value)\n }\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.value\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return Math.sqrt(rootFraction.value)\n }\n\n return value\n }\n\n /**\n * Returns the first element of an array matching the given predicate, or else\n * returns undefined.\n *\n * @hidden\n */\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n /**\n * @param allowAbbreviation Should outputs be shortened, if possible?\n * @param maxAbbreviationError How much error is abbreviating allowed to introduce?\n * @param fixedDigits Use toFixed? How many digits?\n * @param itemSeparator What should list items be separated by?\n */\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator: string,\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n formatFloat(f: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateFloat(f, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return f.toFixed(this.fixedDigits)\n }\n return String(f)\n }\n\n /**\n * Returns a string representation of a float, taking advantage of unicode\n * fractions and square roots.\n *\n * @param value The value to represent as a string.\n * @param epsilon The maximum error introduced by using an expression.\n * @param digits digits The number of digits to use if no expression matches.\n */\n private abbreviateFloat(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateFloat(-value, epsilon, digits)}`\n\n const fraction = Format.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = Format.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {UNICODE_FRACTIONS} from './format'\n\ntype UnicodeFraction = {character: string; ref: string; value: number}\n\nexport class NumberFormatter {\n public allowAbbreviation: boolean\n public maxAbbreviationError: number\n public fixedDigits: number | undefined\n public itemSeparator: string\n\n static matchUnicodeFraction(predicate: (arrayItem: UnicodeFraction) => boolean): UnicodeFraction | undefined {\n for (const each of UNICODE_FRACTIONS) {\n if (predicate(each)) return each\n }\n return undefined\n }\n\n constructor(\n allowAbbreviation: boolean,\n maxAbbreviationError: number,\n fixedDigits: number | undefined,\n itemSeparator = ', ',\n ) {\n this.allowAbbreviation = allowAbbreviation\n this.maxAbbreviationError = maxAbbreviationError\n this.fixedDigits = fixedDigits\n this.itemSeparator = itemSeparator\n }\n\n format(n: number): string {\n if (this.allowAbbreviation) {\n return this.abbreviateNumber(n, this.maxAbbreviationError, this.fixedDigits)\n }\n if (this.fixedDigits !== undefined) {\n return n.toFixed(this.fixedDigits)\n }\n return String(n)\n }\n\n private abbreviateNumber(value: number, epsilon = 0, digits: number | undefined = undefined): string {\n if (Math.abs(value) < epsilon) return '0'\n if (value < 0) return `-${this.abbreviateNumber(-value, epsilon, digits)}`\n\n const fraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(e.value - value) <= epsilon)\n if (fraction !== undefined) {\n return fraction.character\n }\n\n const rootFraction = NumberFormatter.matchUnicodeFraction(e => Math.abs(Math.sqrt(e.value) - value) <= epsilon)\n if (rootFraction !== undefined) {\n return `\\u221A${rootFraction.character}`\n }\n\n if (value % 1 !== 0 && digits !== undefined) {\n return value.toFixed(digits)\n }\n\n return value.toString()\n }\n}\n", "import {NumberFormatter} from './number-formatter'\nimport {ok, err, Result} from 'neverthrow'\n\ntype FormatOptions = {\n allowAbbreviation?: boolean\n maxAbbreviationError?: number\n fixedDigits?: number | undefined\n}\n\nconst DEFAULT_FORMAT_OPTIONS = {\n allowAbbreviation: true,\n maxAbbreviationError: 0,\n fixedDigits: undefined,\n}\n\nexport class Complex {\n /**\n * Complex { real: 0, imag: 0 }\n */\n static readonly ZERO = new Complex(0, 0)\n /**\n * Complex { real: 1, imag: 0 }\n */\n static readonly ONE = new Complex(1, 0)\n /**\n * The imaginary unit.\n */\n static readonly I = new Complex(0, 1)\n\n /**\n * The real part of the Complex number.\n */\n public real: number\n /**\n * The imaginary part of the Complex number.\n */\n public imag: number\n\n /**\n * Converts the given value to a Complex value.\n *\n * @param value - The value to convert to a Complex value\n */\n static from(value: number | Complex): Complex {\n if (typeof value === 'number') {\n return new Complex(value, 0)\n }\n\n return value\n }\n\n /**\n * Returns the real part of a Complex or a number value.\n *\n * @param value - The value to get the real part of\n */\n static real(value: number | Complex): number {\n if (typeof value === 'number') {\n return value\n }\n\n return value.real\n }\n\n /**\n * Returns the imaginary part of a Complex value, or else 0 for number values.\n *\n * @param value - The value to get the imaginary part of\n */\n static imag(value: number | Complex): number {\n if (typeof value === 'number') {\n return 0\n }\n\n return value.imag\n }\n\n /**\n * Returns a new Complex number with the given magnitude and phase.\n *\n * @param magnitude - The magnitude of the Complex number\n * @param phase - The phase of the Complex number\n */\n static polar(magnitude: number, phase: number): Complex {\n const [cos, sin] = this.cosAndSin(phase)\n\n return new Complex(magnitude * cos, magnitude * sin)\n }\n\n private static cosAndSin(radians: number): number[] {\n const unit = Math.PI / 4\n const i = Math.round(radians / unit)\n if (i * unit === radians) {\n const s = Math.sqrt(0.5)\n const snaps = [\n [1, 0], // 0\n [s, s], // \u03C0/4\n [0, 1], // \u03C0/2\n [-s, s], // 3\u03C0/4\n [-1, 0], // \u03C0\n [-s, -s], // 5\u03C0/4\n [0, -1], // 3\u03C0/2\n [s, -s], // 7\u03C0/4\n ]\n return snaps[i & 7]\n }\n return [Math.cos(radians), Math.sin(radians)]\n }\n\n /**\n * @param real - The real part of the Complex number\n * @param imag - The imaginary part of the Complex number\n */\n constructor(real: number, imag: number) {\n this.real = real\n this.imag = imag\n\n this.isApproximatelyEqualTo = this.nearlyEq // alias for nearlyEq\n this.isEqualTo = this.eq // alias for eq\n this.conj = this.conjugate // alias for conjugate\n this.plus = this.add // alias for add\n // aliases for sub\n this.subtract = this.sub\n this.minus = this.sub\n // aliases for mult\n this.multiply = this.mult\n this.times = this.mult\n this.dividedBy = this.div // alias for div\n this.magnitude = this.abs // alias for abs\n this.norm2 = this.abs2 // alias for abs2\n // aliases for arg\n this.angle = this.arg\n this.phase = this.arg\n }\n\n /**\n * Returns true if complex number is equal to other.\n *\n * @param other - The other value to compare with\n */\n eq(other: unknown): boolean {\n if (typeof other === 'number') {\n return this.real === other && this.imag === 0\n }\n if (other instanceof Complex) {\n return this.real === other.real && this.imag === other.imag\n }\n return false\n }\n\n isEqualTo = this.eq.bind(this)\n\n /**\n * Returns true if the Complex number is close to the value of other.\n *\n * @param other - The other value to compare with\n */\n nearlyEq(other: number | Complex | unknown, epsilon: number): boolean {\n if (typeof other === 'number' || other instanceof Complex) {\n const d = this.sub(Complex.from(other))\n return Math.abs(d.real) <= epsilon && Math.abs(d.imag) <= epsilon && d.abs() <= epsilon\n }\n return false\n }\n\n isApproximatelyEqualTo = this.nearlyEq.bind(this)\n\n /**\n * Returns the complex conjugate.\n *\n * @returns A new Complex representing the complex conjugate of this complex number\n */\n conjugate(): Complex {\n return new Complex(this.real, -this.imag)\n }\n\n conj = this.conjugate.bind(this)\n\n /**\n * Returns negation of the value.\n *\n * @returns A new Complex representing the negation of this complex number.\n */\n neg(): Complex {\n return new Complex(-this.real, -this.imag)\n }\n\n /**\n * Returns the sum of this complex number and value.\n *\n * @param value - The addend number.\n * @returns A new Complex representing the sum of this complex number and value.\n */\n add(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real + c.real, this.imag + c.imag)\n }\n\n plus = this.add.bind(this)\n\n /**\n * Returns the subtraction of this complex number and value.\n *\n * @param value - The subtrahend number.\n * @returns A new Complex representing the subtraction of this complex number and value.\n */\n sub(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real - c.real, this.imag - c.imag)\n }\n\n subtract = this.sub.bind(this)\n minus = this.sub.bind(this)\n\n /**\n * Returns the product of this complex number and value.\n *\n * @param value - The multiplier number.\n * @returns A new Complex representing the product of this complex number and value.\n */\n mult(value: number | Complex): Complex {\n const c = Complex.from(value)\n\n return new Complex(this.real * c.real - this.imag * c.imag, this.real * c.imag + this.imag * c.real)\n }\n\n multiply = this.mult.bind(this)\n times = this.mult.bind(this)\n\n /**\n * Returns a complex number divided by value.\n * If value is zero, returns an error.\n *\n * @param value - The divisor number.\n * @returns A Result object with the result of division or a division-by-zero error.\n * @example\n * ```\n * const res = new Complex(2, 3).div(2)\n * if (res.isOk()) {\n * console.log(res.value) // Complex { real: 1, imag: 1.5 }\n * } else {\n * console.error(res.error)\n * }\n * ```\n */\n div(value: number | Complex): Result {\n const c = Complex.from(value)\n const d = c.abs2()\n if (d === 0) {\n return err(Error('Division by Zero'))\n }\n\n const n = this.mult(c.conjugate())\n return ok(new Complex(n.real / d, n.imag / d))\n }\n\n dividedBy = this.div.bind(this)\n\n /**\n * Returns the absolute part of its polar form.\n *\n * @returns A number representing the absolute part of its polar form.\n * @example\n * ```\n * new Complex(-1, 0).abs() // 1\n * new Complex(3, 4).abs() // 5\n * ```\n */\n abs(): number {\n return Math.sqrt(this.abs2())\n }\n\n magnitude = this.abs.bind(this)\n\n /**\n * Returns square of the absolute value.\n *\n * @returns A number representing the square of the absolute value.\n * @example\n * ```\n * new Complex(-1, 0).abs2() // 1\n * new Complex(3, 4).abs2() // 25\n * ```\n */\n abs2(): number {\n return this.real * this.real + this.imag * this.imag\n }\n\n norm2 = this.abs2.bind(this)\n\n /**\n * Returns the angle part of its polar form.\n *\n * @returns A number representing the angle part of its polar form in radians.\n */\n arg(): number {\n return Math.atan2(this.imag, this.real)\n }\n\n angle = this.arg.bind(this)\n phase = this.arg.bind(this)\n\n /**\n * Returns the exponentiation of a complex number. That is c.pow(x) = c^x.\n *\n * @param exponent - the exponent number\n * @returns A number representing base taken to the power of exponent\n */\n pow(exponent: number | Complex): Complex {\n if (exponent === 0.5 && this.imag === 0 && this.real >= 0) {\n return new Complex(Math.sqrt(this.real), 0)\n }\n if (this.eq(Complex.ZERO)) {\n return Complex.ZERO\n }\n return this.ln().mult(Complex.from(exponent)).exp()\n }\n\n /**\n * Returns e raised to the c power. That is c.exp() = e^c.\n */\n exp(): Complex {\n return Complex.polar(Math.exp(this.real), this.imag)\n }\n\n /**\n * Returns a string representing this complex number according to the specified format.\n *\n * @param options - An object that sets the format options for this complex number.\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).format() // '1+2i'\n * new Complex(1, 2).format({\n * allowAbbreviation: false,\n * fixedDigits: 2,\n * }) // '+1.00+2.00i'\n * ```\n */\n format(options: FormatOptions = DEFAULT_FORMAT_OPTIONS): string {\n const format = new NumberFormatter(\n options.allowAbbreviation === undefined ? DEFAULT_FORMAT_OPTIONS.allowAbbreviation : options.allowAbbreviation,\n options.maxAbbreviationError || 0,\n options.fixedDigits,\n )\n return format.allowAbbreviation ? this.toStringAllowSingleValue(format) : this.toStringBothValues(format)\n }\n\n /**\n * Returns a compact string representing this Complex number.\n *\n * @returns A string representing this complex number.\n * @example\n * ```\n * new Complex(1, 2).toString() // '1+2i'\n * new Complex(Math.sqrt(1 / 2), -1 / 3).toString() // '\u221A\u00BD-\u2153i'\n * ```\n */\n toString(): string {\n const formatter = new NumberFormatter(\n DEFAULT_FORMAT_OPTIONS.allowAbbreviation,\n DEFAULT_FORMAT_OPTIONS.maxAbbreviationError,\n DEFAULT_FORMAT_OPTIONS.fixedDigits,\n )\n return this.toStringAllowSingleValue(formatter)\n }\n\n // log(c) = ln|c| + arg(c)i\n private ln(): Complex {\n return new Complex(Math.log(this.abs()), this.arg())\n }\n\n // If a complex number has only real or imaginary parts,\n // convert it to a string with only real or imaginary parts, such as '\u2153' or '-3i'.\n private toStringAllowSingleValue(formatter: NumberFormatter): string {\n if (this.canImagPartBeOmitted(formatter.maxAbbreviationError)) {\n return formatter.format(this.real)\n }\n\n if (this.canRealPartBeOmitted(formatter.maxAbbreviationError)) {\n let imagFactor\n\n if (this.isImagFactorCloseToOne(formatter.maxAbbreviationError)) {\n imagFactor = ''\n } else if (this.isImagFactorMinusOne(formatter.maxAbbreviationError)) {\n imagFactor = '-'\n } else {\n imagFactor = formatter.format(this.imag)\n }\n\n return `${imagFactor}i`\n }\n\n return this.toStringBothValues(formatter)\n }\n\n // Convert a complex number whose real and imaginary parts are not both zero into a string like '\u2153-3i'.\n private toStringBothValues(formatter: NumberFormatter): string {\n const imagSign = this.imag >= 0 ? '+' : '-'\n const imagFactor = this.canImagFactorBeOmitted(formatter) ? '' : formatter.format(Math.abs(this.imag))\n const realPlusSign = formatter.allowAbbreviation || formatter.fixedDigits === undefined || this.real < 0 ? '' : '+'\n\n return `${realPlusSign + formatter.format(this.real) + imagSign + imagFactor}i`\n }\n\n // Returns whether the real part of a complex number can be omitted.\n private canRealPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.real) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number can be omitted.\n private canImagPartBeOmitted(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to 1.\n private isImagFactorCloseToOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag - 1) <= maxAbbreviationError\n }\n\n // Returns whether the imaginary part of a complex number is close to -1.\n private isImagFactorMinusOne(maxAbbreviationError: number): boolean {\n return Math.abs(this.imag + 1) <= maxAbbreviationError\n }\n\n // Returns true if the factor of the imaginary part can be omitted, such as i or -i.\n private canImagFactorBeOmitted(formatter: NumberFormatter): boolean {\n return formatter.allowAbbreviation && Math.abs(Math.abs(this.imag) - 1) <= formatter.maxAbbreviationError\n }\n}\n", "export const Config = {\n MAX_QUBIT_COUNT: 16,\n} as const\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {format as prettyFormat} from 'pretty-format'\n\nlet CONSTRUCTOR_CALLS_NESTING = 0\n\nexport class DetailedError extends Error {\n public details: string | undefined\n private detailsObj: unknown\n\n constructor(message: string, detailsObj: unknown) {\n super(message)\n\n this.detailsObj = detailsObj\n this.name = 'Error'\n this.message = message\n this.stack = new Error().stack\n if (this.stack !== undefined) {\n this.stack = this.stack.replace(/^Error\\n\\s+at new DetailedError (\\S+)\\s?\\n\\s+at /, '\\n ')\n }\n\n CONSTRUCTOR_CALLS_NESTING++\n try {\n this.details =\n CONSTRUCTOR_CALLS_NESTING === 1\n ? prettyFormat(this.detailsObj)\n : '(failed to prettyFormat detailsObj due to possibly re-entrancy)'\n } catch (ex) {\n // eslint-disable-next-line no-console\n console.error(ex)\n this.details = '(failed to prettyFormat detailsObj, see the console for details)'\n } finally {\n CONSTRUCTOR_CALLS_NESTING--\n }\n }\n}\n", "/**\n * Emit a custom event\n *\n * @param type The event type\n * @param detail Any details to pass along with the event\n * @param element The element to attach the event to\n */\nexport function emitEvent(type: string, detail = {}, element: Node = document): boolean {\n const event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail,\n })\n\n return element.dispatchEvent(event)\n}\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function hasOwnProperty(obj: unknown, key: K): obj is Record {\n return obj !== null && obj !== undefined && key in (obj as Record)\n}\n\nexport type ArrayIsh =\n | unknown[]\n | Float32Array\n | Float64Array\n | Int8Array\n | Int16Array\n | Int32Array\n | Uint8Array\n | Uint16Array\n | Uint32Array\n | Uint8ClampedArray\n\nconst GENERIC_ARRAY_TYPES = [\n Float32Array,\n Float64Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Uint8ClampedArray,\n]\n\nexport function equate(subject: unknown, other: unknown): boolean {\n if (subject === other || (isExactlyNaN(subject) && isExactlyNaN(other))) {\n return true\n }\n\n const customEquality = tryEquateCustom(subject, other)\n if (customEquality !== undefined) {\n return customEquality\n }\n if (isAtomic(subject) || isAtomic(other) || !eqType(subject, other)) {\n return false\n }\n\n if (subject instanceof Map && other instanceof Map) {\n return equateMaps(subject, other)\n }\n if (subject instanceof Set && other instanceof Set) {\n return equateSets(subject, other)\n }\n if (isIndexable(subject) && isIndexable(other)) {\n return equateIndexables(subject, other)\n }\n\n return equateObjects(subject, other)\n}\n\nfunction isIndexable(value: unknown): value is ArrayIsh {\n return Array.isArray(value) || !GENERIC_ARRAY_TYPES.every(t => !(value instanceof t))\n}\n\nfunction isExactlyNaN(v: unknown) {\n return typeof v === 'number' && isNaN(v)\n}\n\nfunction tryEquateCustom(subject: unknown, other: unknown): boolean | undefined {\n if (!isAtomic(subject) && hasOwnProperty(subject, 'isEqualTo') && typeof subject.isEqualTo === 'function') {\n return subject.isEqualTo(other) as boolean\n }\n if (!isAtomic(other) && hasOwnProperty(other, 'isEqualTo') && typeof other.isEqualTo === 'function') {\n return other.isEqualTo(subject) as boolean\n }\n return undefined\n}\n\ntype Atomic = null | undefined | string | number | boolean\n\nfunction isAtomic(value: unknown): value is Atomic {\n return (\n value === null ||\n value === undefined ||\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean'\n )\n}\n\nfunction equateMaps(subject: Map, other: Map) {\n if (subject.size !== other.size) {\n return false\n }\n for (const [k, v] of subject) {\n if (!other.has(k)) {\n return false\n }\n const otherV = other.get(k)\n if (!equate(v, otherV)) {\n return false\n }\n }\n return true\n}\n\nfunction equateSets(subject: Set, other: Set) {\n if (subject.size !== other.size) {\n return false\n }\n for (const k of subject) {\n if (!other.has(k)) {\n return false\n }\n }\n return true\n}\n\nfunction eqType(subject: unknown, other: unknown): boolean {\n return typeof subject === typeof other\n}\n\nfunction equateIndexables(subject: ArrayIsh, other: ArrayIsh) {\n if (subject.length !== other.length) {\n return false\n }\n for (let i = 0; i < subject.length; i++) {\n if (!equate(subject[i], other[i])) {\n return false\n }\n }\n return true\n}\n\nfunction objectKeys(obj: unknown) {\n const result = new Set()\n for (const k in obj as Record) {\n if (hasOwnProperty(obj, k)) {\n result.add(k)\n }\n }\n return result\n}\n\nfunction equateObjects(subject: unknown, other: unknown) {\n const keys = objectKeys(subject)\n if (!equateSets(keys, objectKeys(other))) {\n return false\n }\n\n for (const k of keys) {\n if (k === Symbol.iterator) {\n continue\n }\n if (!equate((subject as Record)[k as string], (other as Record)[k as string])) {\n return false\n }\n }\n\n const hasSubjectIter = hasOwnProperty(subject, Symbol.iterator)\n const hasOtherIter = hasOwnProperty(other, Symbol.iterator)\n if (hasSubjectIter !== hasOtherIter) {\n return false\n }\n if (hasSubjectIter && hasOtherIter) {\n if (!equateIterables(subject as Iterable, other as Iterable)) {\n return false\n }\n }\n\n return true\n}\n\nfunction equateIterables(subject: Iterable, other: Iterable) {\n const otherIter = other[Symbol.iterator]()\n for (const subjectItem of subject) {\n const otherItemDone = otherIter.next()\n if (otherItemDone.done || !equate(subjectItem, otherItemDone.value)) {\n return false\n }\n }\n return otherIter.next().done\n}\n", "import {Config} from './config'\n\nexport type CreateArrayWithLengthX = ACC['length'] extends LENGTH\n ? ACC\n : CreateArrayWithLengthX\n\nexport type NumericRange<\n START_ARR extends number[],\n END extends number,\n ACC extends number = never,\n> = START_ARR['length'] extends END ? ACC | END : NumericRange<[...START_ARR, 1], END, ACC | START_ARR['length']>\n\nexport type ResizeableSpan = NumericRange, typeof Config.MAX_QUBIT_COUNT>\n\nexport const isResizeableSpan = (arg: unknown): arg is ResizeableSpan =>\n typeof arg == 'number' && 1 <= arg && arg <= Config.MAX_QUBIT_COUNT\n", "/**\n * Copyright 2017 Google Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Result} from 'neverthrow'\n\ntype ParseError = {message: string}\nconst toParseError = (): ParseError => ({message: 'Parse Error'})\n\nexport class Util {\n static need(expression: boolean, message: string, args?: unknown[]): asserts expression {\n if (expression !== true) {\n const argDesc = args === undefined ? '(not provided)' : `[${Array.prototype.slice.call(args).join(', ')}]`\n const msgDesc = message === undefined ? '(not provided)' : message\n const msg = `Precondition failed\\n\\nMessage: ${msgDesc}\\n\\nArgs: ${argDesc}`\n throw new Error(msg)\n }\n }\n\n static notNull(v: T): asserts v is NonNullable {\n Util.need(v !== null && v !== undefined, 'notNull')\n }\n\n // \u73FE\u5728\u306E URL \u3092\u30D1\u30FC\u30B9\u3057\u3001\u6700\u5F8C\u306E / \u4EE5\u964D\u3092\u30C7\u30B3\u30FC\u30C9\u3057\u305F\u3082\u306E\u3092\u8FD4\u3059\n static get urlJson(): string {\n const url = new URL(location.href, window.location.origin)\n const path = decodeURIComponent(url.pathname)\n const lastSlashIndex = path.lastIndexOf('/')\n\n return path.substring(lastSlashIndex + 1)\n }\n\n static safeJsonParse = Result.fromThrowable(JSON.parse, toParseError)\n}\n", "export const SerializedAntiControlGateType = '\u25E6'\n\nexport type SerializedAntiControlGate = {\n type: typeof SerializedAntiControlGateType\n targets: number[]\n}\n", "export const SerializedBlochDisplayType = 'Bloch'\n\nexport type SerializedBlochDisplay = {\n type: typeof SerializedBlochDisplayType\n targets: number[]\n}\n", "export const SerializedControlGateType = '\u2022'\n\nexport type SerializedControlGate = {\n type: typeof SerializedControlGateType\n targets: number[]\n}\n", "export const SerializedHGateType = 'H'\n\nexport type SerializedHGate = {\n type: typeof SerializedHGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedMeasurementGateType = 'Measure'\n\nexport type SerializedMeasurementGate = {\n type: typeof SerializedMeasurementGateType\n targets: number[]\n flag?: string\n}\n", "export const SerializedPhaseGateType = 'P'\n\nexport type SerializedPhaseGate = {\n type: typeof SerializedPhaseGateType\n angle?: string\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftDaggerGateType = 'QFT\u2020'\n\nexport type SerializedQftDaggerGate = {\n type: typeof SerializedQftDaggerGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "import {ResizeableSpan} from './numeric-range'\n\nexport const SerializedQftGateType = 'QFT'\n\nexport type SerializedQftGate = {\n type: typeof SerializedQftGateType\n span: ResizeableSpan\n targets: number[]\n}\n", "export const SerializedRnotGateType = 'X^\u00BD'\n\nexport type SerializedRnotGate = {\n type: typeof SerializedRnotGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRxGateType = 'Rx'\n\nexport type SerializedRxGate = {\n type: typeof SerializedRxGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRyGateType = 'Ry'\n\nexport type SerializedRyGate = {\n type: typeof SerializedRyGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedRzGateType = 'Rz'\n\nexport type SerializedRzGate = {\n type: typeof SerializedRzGateType\n targets: number[]\n angle?: string\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSDaggerGateType = 'S\u2020'\n\nexport type SerializedSDaggerGate = {\n type: typeof SerializedSDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSGateType = 'S'\n\nexport type SerializedSGate = {\n type: typeof SerializedSGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedSpacerGateType = '\u2026'\n\nexport type SerializedSpacerGate = {\n type: typeof SerializedSpacerGateType\n targets: number[]\n}\n", "export const SerializedSwapGateType = 'Swap'\n\nexport type SerializedSwapGate = {\n type: typeof SerializedSwapGateType\n targets: [number, number]\n controls?: number[]\n}\n", "export const SerializedTDaggerGateType = 'T\u2020'\n\nexport type SerializedTDaggerGate = {\n type: typeof SerializedTDaggerGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedTGateType = 'T'\n\nexport type SerializedTGate = {\n type: typeof SerializedTGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedWrite0GateType = '|0>'\nexport const SerializedWrite1GateType = '|1>'\n\nexport type SerializedWriteGate = {\n type: typeof SerializedWrite0GateType | typeof SerializedWrite1GateType\n targets: number[]\n}\n", "export const SerializedXGateType = 'X'\n\nexport type SerializedXGate = {\n type: typeof SerializedXGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedYGateType = 'Y'\n\nexport type SerializedYGate = {\n type: typeof SerializedYGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\n}\n", "export const SerializedZGateType = 'Z'\n\nexport type SerializedZGate = {\n type: typeof SerializedZGateType\n targets: number[]\n controls?: number[]\n antiControls?: number[]\n if?: string\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\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\n\nvar defaultErrorConfig = {\r\n withStackTrace: false\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nvar createNeverThrowError = function (message, result, config) {\r\n if (config === void 0) { config = defaultErrorConfig; }\r\n var data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n var maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data: data,\r\n message: message,\r\n stack: maybeStack\r\n };\r\n};\n\nvar ResultAsync = /** @class */ (function () {\r\n function ResultAsync(res) {\r\n this._promise = res;\r\n }\r\n ResultAsync.fromSafePromise = function (promise) {\r\n var newPromise = promise.then(function (value) { return new Ok(value); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.fromPromise = function (promise, errorFn) {\r\n var newPromise = promise\r\n .then(function (value) { return new Ok(value); })[\"catch\"](function (e) { return new Err(errorFn(e)); });\r\n return new ResultAsync(newPromise);\r\n };\r\n ResultAsync.combine = function (asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n };\r\n ResultAsync.combineWithAllErrors = function (asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n };\r\n ResultAsync.prototype.map = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isErr()) {\r\n return [2 /*return*/, new Err(res.error)];\r\n }\r\n _a = Ok.bind;\r\n return [4 /*yield*/, f(res.value)];\r\n case 1: return [2 /*return*/, new (_a.apply(Ok, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.mapErr = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (res.isOk()) {\r\n return [2 /*return*/, new Ok(res.value)];\r\n }\r\n _a = Err.bind;\r\n return [4 /*yield*/, f(res.error)];\r\n case 1: return [2 /*return*/, new (_a.apply(Err, [void 0, _b.sent()]))()];\r\n }\r\n });\r\n }); }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.andThen = function (f) {\r\n return new ResultAsync(this._promise.then(function (res) {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n var newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n ResultAsync.prototype.orElse = function (f) {\r\n var _this = this;\r\n return new ResultAsync(this._promise.then(function (res) { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (res.isErr()) {\r\n return [2 /*return*/, f(res.error)];\r\n }\r\n return [2 /*return*/, new Ok(res.value)];\r\n });\r\n }); }));\r\n };\r\n ResultAsync.prototype.match = function (ok, _err) {\r\n return this._promise.then(function (res) { return res.match(ok, _err); });\r\n };\r\n ResultAsync.prototype.unwrapOr = function (t) {\r\n return this._promise.then(function (res) { return res.unwrapOr(t); });\r\n };\r\n // Makes ResultAsync implement PromiseLike\r\n ResultAsync.prototype.then = function (successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n };\r\n return ResultAsync;\r\n}());\r\nvar okAsync = function (value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n};\r\nvar errAsync = function (err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n};\r\nvar fromPromise = ResultAsync.fromPromise;\r\nvar fromSafePromise = ResultAsync.fromSafePromise;\n\nvar appendValueToEndOfList = function (value) { return function (list) { return __spreadArray(__spreadArray([], __read(list), false), [value], false); }; };\r\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nvar combineResultList = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return acc.isOk()\r\n ? result.isErr()\r\n ? err(result.error)\r\n : acc.map(appendValueToEndOfList(result.value))\r\n : acc;\r\n }, ok([]));\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nvar combineResultAsyncList = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n};\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nvar combineResultListWithAllErrors = function (resultList) {\r\n return resultList.reduce(function (acc, result) {\r\n return result.isErr()\r\n ? acc.isErr()\r\n ? err(__spreadArray(__spreadArray([], __read(acc.error), false), [result.error], false))\r\n : err([result.error])\r\n : acc.isErr()\r\n ? acc\r\n : ok(__spreadArray(__spreadArray([], __read(acc.value), false), [result.value], false));\r\n }, ok([]));\r\n};\r\nvar combineResultAsyncListWithAllErrors = function (asyncResultList) {\r\n return ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\r\n};\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n try {\r\n var result = fn.apply(void 0, __spreadArray([], __read(args), false));\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nvar ok = function (value) { return new Ok(value); };\r\nvar err = function (err) { return new Err(err); };\r\nvar Ok = /** @class */ (function () {\r\n function Ok(value) {\r\n this.value = value;\r\n }\r\n Ok.prototype.isOk = function () {\r\n return true;\r\n };\r\n Ok.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n Ok.prototype.map = function (f) {\r\n return ok(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.mapErr = function (_f) {\r\n return ok(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.andThen = function (f) {\r\n return f(this.value);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Ok.prototype.orElse = function (_f) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype.asyncAndThen = function (f) {\r\n return f(this.value);\r\n };\r\n Ok.prototype.asyncMap = function (f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.unwrapOr = function (_v) {\r\n return this.value;\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Ok.prototype.match = function (ok, _err) {\r\n return ok(this.value);\r\n };\r\n Ok.prototype._unsafeUnwrap = function (_) {\r\n return this.value;\r\n };\r\n Ok.prototype._unsafeUnwrapErr = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n };\r\n return Ok;\r\n}());\r\nvar Err = /** @class */ (function () {\r\n function Err(error) {\r\n this.error = error;\r\n }\r\n Err.prototype.isOk = function () {\r\n return false;\r\n };\r\n Err.prototype.isErr = function () {\r\n return !this.isOk();\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.map = function (_f) {\r\n return err(this.error);\r\n };\r\n Err.prototype.mapErr = function (f) {\r\n return err(f(this.error));\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.andThen = function (_f) {\r\n return err(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n Err.prototype.orElse = function (f) {\r\n return f(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncAndThen = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n Err.prototype.asyncMap = function (_f) {\r\n return errAsync(this.error);\r\n };\r\n Err.prototype.unwrapOr = function (v) {\r\n return v;\r\n };\r\n Err.prototype.match = function (_ok, err) {\r\n return err(this.error);\r\n };\r\n Err.prototype._unsafeUnwrap = function (config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n };\r\n Err.prototype._unsafeUnwrapErr = function (_) {\r\n return this.error;\r\n };\r\n return Err;\r\n}());\r\nvar fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromPromise, fromSafePromise, fromThrowable, ok, okAsync };\n", "import { Simulator } from '@qni/simulator'\nimport { Util } from '@qni/common'\n\nlet resultCache = {}\n\nfunction runSimulator(e) {\n const circuitJson = e.data.circuitJson\n const qubitCount = e.data.qubitCount\n const stepIndex = e.data.stepIndex\n const steps = e.data.steps\n const targets = e.data.targets\n const invalidateCaches = e.data.invalidateCaches\n const simulator = new Simulator('0'.repeat(qubitCount))\n\n Util.notNull(qubitCount)\n Util.notNull(stepIndex)\n Util.notNull(steps)\n Util.notNull(targets)\n\n // const s_time = new Date()\n\n if (resultCache[circuitJson] === undefined || invalidateCaches) {\n resultCache = {}\n resultCache[circuitJson] = {}\n }\n\n // let cacheHit = false\n\n for (const [i, operations] of steps.entries()) {\n let stepResult = {}\n\n if (resultCache[circuitJson][i] === undefined) {\n resultCache[circuitJson][i] = {}\n }\n const cachedStepResult = resultCache[circuitJson][i]\n\n if (\n cachedStepResult === undefined ||\n cachedStepResult.targets === undefined ||\n cachedStepResult.targets.length < targets.length\n ) {\n // cacheHit = false\n\n simulator.runStep(operations)\n\n const allAmplitudes = simulator.state.matrix.clone()\n const blochVectors = Object.assign({}, simulator.blochVectors)\n const measuredBits = Object.assign({}, simulator.measuredBits)\n const flags = Object.assign({}, simulator.flags)\n\n resultCache[circuitJson][i] = {\n type: 'step',\n step: i,\n amplitudes: allAmplitudes,\n targets,\n blochVectors,\n measuredBits,\n flags,\n }\n\n if (i === stepIndex) {\n const amplitudes = pickTargetAmplitudes(targets, allAmplitudes)\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes,\n blochVectors,\n measuredBits,\n flags,\n }\n } else {\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors,\n measuredBits,\n flags,\n }\n }\n } else {\n // cacheHit = true\n\n stepResult = {\n type: 'step',\n step: i,\n amplitudes: [],\n blochVectors: cachedStepResult.blochVectors,\n measuredBits: cachedStepResult.measuredBits,\n flags: cachedStepResult.flags,\n }\n\n if (i === stepIndex) {\n stepResult.amplitudes = pickTargetAmplitudes(targets, cachedStepResult.amplitudes)\n }\n }\n\n self.postMessage(stepResult)\n }\n\n // const e_time = new Date()\n // const diff = e_time.getTime() - s_time.getTime()\n // const cacheDesc = cacheHit ? \"\uD83C\uDFAF CACHE HIT\" : \"\uD83D\uDCA6 CACHE MISS\"\n // console.log(`\u23F1 simulation took ${diff} msec (${cacheDesc})`)\n\n self.postMessage({ type: 'finish' })\n}\n\nconst pickTargetAmplitudes = (targets, amplitudes) => {\n return targets.reduce((map, each) => {\n if (each >= amplitudes.height) {\n map[each] = [0, 0]\n } else {\n const c = amplitudes.element(0, each).value\n map[each] = [c.real, c.imag]\n }\n return map\n }, {})\n}\n\nself.addEventListener('message', runSimulator)\n"], + "mappings": "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", + "names": ["require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "__name", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi256", "__name", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "__commonJSMin", "exports", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "__name", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "i", "val", "key", "require_AsymmetricMatcher", "__commonJSMin", "exports", "_collections", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "__name", "val", "config", "indentation", "depth", "refs", "printer", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "__commonJSMin", "exports", "_collections", "SPACE", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "__name", "name", "test", "val", "isNamedNodeMap", "collection", "serialize", "config", "indentation", "depth", "refs", "printer", "props", "attribute", "plugin", "_default", "require_escapeHTML", "__commonJSMin", "exports", "escapeHTML", "str", "__name", "require_markup", "__commonJSMin", "exports", "_escapeHTML", "_interopRequireDefault", "obj", "__name", "printProps", "keys", "props", "config", "indentation", "depth", "refs", "printer", "indentationNext", "colors", "key", "value", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "__commonJSMin", "exports", "_markup", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "__name", "val", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "test", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "serialize", "config", "indentation", "depth", "refs", "printer", "type", "attr", "props", "attribute", "plugin", "_default", "require_Immutable", "__commonJSMin", "exports", "_collections", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "__name", "name", "printAsLeaf", "SPACE", "LAZY", "printImmutableEntries", "val", "config", "indentation", "depth", "refs", "printer", "type", "getRecordEntries", "i", "key", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "serialize", "test", "plugin", "_default", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "t", "u", "v", "a", "r", "__name", "require_react_is", "__commonJSMin", "exports", "module", "require_ReactElement", "__commonJSMin", "exports", "ReactIs", "_interopRequireWildcard", "_markup", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "__name", "obj", "cache", "newObj", "hasPropertyDescriptor", "key", "desc", "getChildren", "arg", "children", "item", "getType", "element", "type", "functionName", "getPropKeys", "props", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_ReactTestComponent", "__commonJSMin", "exports", "_markup", "Symbol", "testSymbol", "getPropKeys", "__name", "object", "props", "key", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_build", "__commonJSMin", "exports", "format", "_ansiStyles", "_interopRequireDefault", "_collections", "_AsymmetricMatcher", "_DOMCollection", "_DOMElement", "_Immutable", "_ReactElement", "_ReactTestComponent", "obj", "__name", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "val", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "config", "indentation", "depth", "refs", "hasCalledToJSON", "hitMaxDepth", "min", "printer", "isNewPlugin", "plugin", "printPlugin", "printed", "valChild", "str", "indentationNext", "error", "findPlugin", "plugins", "p", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "key", "getColorsHighlight", "colors", "value", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "createIndent", "indent", "_default", "makeBy", "__name", "f", "n", "j", "out", "i", "range", "__name", "start", "end", "makeBy", "i", "require_fraction", "__commonJSMin", "exports", "module", "root", "MAX_CYCLE_LEN", "P", "assign", "n", "s", "Fraction", "newFraction", "d", "f", "a", "gcd", "factorize", "num", "factors", "i", "parse", "__name", "p1", "p2", "v", "w", "x", "y", "z", "A", "B", "C", "D", "N", "M", "modpow", "b", "e", "m", "r", "cycleLen", "rem", "t", "cycleStart", "len", "rem1", "rem2", "places", "k", "eps", "thisABS", "cont", "excludeWhole", "whole", "str", "res", "dec", "cycLen", "cycOff", "require_ansi_styles", "wrapAnsi256", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "val", "key", "require_AsymmetricMatcher", "_collections", "os", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "isNamedNodeMap", "collection", "props", "attribute", "__spreadValues", "require_escapeHTML", "escapeHTML", "require_markup", "_escapeHTML", "_interopRequireDefault", "Rh", "obj", "printProps", "colors", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "_markup", "as", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "_a", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "attr", "require_Immutable", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "printAsLeaf", "LAZY", "printImmutableEntries", "getRecordEntries", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "require_react_is_production_min", "c", "g", "h", "l", "p", "q", "u", "require_react_is", "Hh", "require_ReactElement", "ReactIs", "_interopRequireWildcard", "Yh", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "cache", "newObj", "hasPropertyDescriptor", "desc", "getChildren", "arg", "item", "getType", "element", "functionName", "getPropKeys", "require_ReactTestComponent", "testSymbol", "require_build", "format", "_ansiStyles", "Ah", "_AsymmetricMatcher", "Nh", "_DOMCollection", "Dh", "_DOMElement", "Lh", "_Immutable", "Kh", "_ReactElement", "cc", "_ReactTestComponent", "pc", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "hasCalledToJSON", "hitMaxDepth", "min", "isNewPlugin", "printPlugin", "valChild", "error", "findPlugin", "plugins", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "getColorsHighlight", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "_b", "_c", "_d", "_e", "_f", "_g", "createIndent", "indent", "import_fraction", "dh", "yh", "__awaiter", "thisArg", "_arguments", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "rejected", "__generator", "body", "_", "verb", "op", "__read", "o", "ar", "__spreadArray", "to", "from", "pack", "defaultErrorConfig", "createNeverThrowError", "data", "maybeStack", "ResultAsync", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "combineResultList", "resultList", "acc", "combineResultListWithAllErrors", "Result", "fromThrowable", "fn", "args", "_i", "combine", "combineWithAllErrors", "_v", "_ok", "import_pretty_format", "Ec", "radian", "angle", "coefficient", "piCoefficient", "UNICODE_FRACTIONS", "_Format", "fraction", "epsilon", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "digits", "Format", "NumberFormatter", "_NumberFormatter", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "other", "exponent", "formatter", "imagFactor", "imagSign", "Complex", "CONSTRUCTOR_CALLS_NESTING", "DetailedError", "detailsObj", "prettyFormat", "ex", "toParseError", "_Util", "expression", "argDesc", "msg", "url", "path", "lastSlashIndex", "Util", "SerializedBlochDisplayType", "SerializedControlGateType", "SerializedHGateType", "SerializedMeasurementGateType", "SerializedPhaseGateType", "SerializedQftDaggerGateType", "SerializedQftGateType", "SerializedRnotGateType", "SerializedRxGateType", "SerializedRyGateType", "SerializedRzGateType", "SerializedSDaggerGateType", "SerializedSGateType", "SerializedSpacerGateType", "SerializedSwapGateType", "SerializedTDaggerGateType", "SerializedTGateType", "SerializedWrite0GateType", "SerializedWrite1GateType", "SerializedXGateType", "SerializedYGateType", "SerializedZGateType", "Matrix", "_Matrix", "height", "buffer", "rows", "row", "col", "elements", "matrixElementGenerator", "buf", "ri", "ii", "S", "_row", "colIndex", "range", "j", "tr_r", "tr_i", "newBuf", "kIn", "kOut", "b1", "b2", "newBuffer", "w1", "h1", "w2", "h2", "r1", "r2", "c1", "c2", "k1", "k2", "k3", "cr1", "ci1", "cr2", "ci2", "cr3", "ci3", "ai", "br", "bi", "cr", "ci", "dr", "di", "i1", "i2", "r3", "i3", "sr", "si", "vr", "vi", "mi", "H", "safeSquareMatrix", "X", "Y", "Z", "SDagger", "T", "TDagger", "PHASE", "phi", "\u03C6", "$", "RNOT", "RX", "theta", "\u03B8", "cos\u03B82", "sin\u03B82", "RY", "RZ", "StateVector", "_StateVector", "bits", "index", "bit", "operation2x2", "qubitIndex", "controlMask", "G", "old", "isControlled", "qubitVal", "xr", "xi", "yr", "yi", "bitString", "paren", "parenToken", "kets", "invalidBitStringError", "char", "traceBits", "removeBits", "mask", "right", "densityMatrix", "bra", "ket", "amp", "ketMat", "braMat", "ketBra", "round", "decimal", "Simulator", "operations", "Ke", "Ye", "be", "target", "xe", "je", "et", "rt", "$e", "Te", "Pe", "qe", "Ze", "Ve", "Ge", "Ce", "ge", "Xe", "Re", "Ie", "ke", "Oe", "we", "targets", "pZero", "controls", "antiControls", "allControls", "target0", "target1", "control", "span", "import_fraction", "__awaiter", "thisArg", "_arguments", "P", "generator", "adopt", "value", "resolve", "__name", "reject", "fulfilled", "step", "e", "rejected", "result", "__generator", "body", "_", "t", "f", "y", "g", "verb", "n", "op", "__read", "o", "m", "i", "r", "ar", "error", "__spreadArray", "to", "from", "pack", "l", "defaultErrorConfig", "createNeverThrowError", "message", "config", "data", "maybeStack", "ResultAsync", "res", "promise", "newPromise", "Ok", "errorFn", "Err", "asyncResultList", "combineResultAsyncList", "combineResultAsyncListWithAllErrors", "_this", "_a", "_b", "newValue", "ok", "_err", "successCallback", "failureCallback", "errAsync", "__name", "err", "ResultAsync", "Err", "fromPromise", "fromSafePromise", "appendValueToEndOfList", "value", "list", "__spreadArray", "__read", "combineResultList", "resultList", "acc", "result", "ok", "combineResultAsyncList", "asyncResultList", "combineResultListWithAllErrors", "combineResultAsyncListWithAllErrors", "Result", "fromThrowable", "fn", "errorFn", "args", "_i", "e", "combine", "combineWithAllErrors", "Ok", "f", "_f", "_v", "_err", "_", "config", "createNeverThrowError", "error", "v", "_ok", "import_pretty_format", "UNICODE_FRACTIONS", "_Format", "__name", "text", "fraction", "e", "result", "value", "epsilon", "r", "rootFraction", "predicate", "each", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "f", "digits", "NumberFormatter", "_NumberFormatter", "__name", "predicate", "each", "UNICODE_FRACTIONS", "allowAbbreviation", "maxAbbreviationError", "fixedDigits", "itemSeparator", "n", "value", "epsilon", "digits", "fraction", "e", "rootFraction", "DEFAULT_FORMAT_OPTIONS", "_Complex", "real", "imag", "magnitude", "phase", "cos", "sin", "radians", "unit", "i", "s", "other", "d", "c", "err", "ok", "exponent", "options", "format", "formatter", "imagFactor", "imagSign", "toParseError", "__name", "_Util", "expression", "message", "args", "argDesc", "msg", "v", "url", "path", "lastSlashIndex", "Result", "Util", "resultCache", "runSimulator", "e", "circuitJson", "qubitCount", "stepIndex", "steps", "targets", "invalidateCaches", "simulator", "tc", "G", "i", "operations", "stepResult", "cachedStepResult", "allAmplitudes", "blochVectors", "measuredBits", "flags", "amplitudes", "pickTargetAmplitudes", "__name", "map", "each", "c"] } diff --git a/packages/simulator/src/matrix.ts b/packages/simulator/src/matrix.ts index 3d14ffad4..f188a5f34 100644 --- a/packages/simulator/src/matrix.ts +++ b/packages/simulator/src/matrix.ts @@ -86,21 +86,6 @@ export class Matrix { return res._unsafeUnwrap() } - /** - * Returns an identity matrix of the specified size. - * - * @param size - The size of the identity matrix - * @returns A result object with the generated identity matrix or an error - */ - static identity(size: number): Result { - const buf = new Float64Array(size * size * 2) - for (let i = 0; i < size; i++) { - buf[i * (size + 1) * 2] = 1 - } - - return Matrix.create(size, size, buf) - } - /** * Returns a square matrix with the specified elements. * diff --git a/packages/simulator/test/matrix.test.ts b/packages/simulator/test/matrix.test.ts index 23e5d48b2..9258f64ea 100644 --- a/packages/simulator/test/matrix.test.ts +++ b/packages/simulator/test/matrix.test.ts @@ -44,19 +44,6 @@ describe('Matrix', () => { expect(Matrix.row(2, 3, new Complex(0, 5)).toString()).toBe('{{2, 3, 5i}}') }) - test('identity', () => { - expect(Matrix.identity(1)._unsafeUnwrap().toString()).toBe('{{1}}') - expect(Matrix.identity(2)._unsafeUnwrap().toString()).toBe('{{1, 0}, {0, 1}}') - expect(Matrix.identity(3)._unsafeUnwrap().toString()).toBe('{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}') - expect(Matrix.identity(4)._unsafeUnwrap().toString()).toBe( - '{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}}', - ) - - const resErr = Matrix.identity(-1) - expect(resErr.isErr()).toBeTruthy() - expect(resErr._unsafeUnwrapErr().message).toBe('width(-1) < 0') - }) - test('square', () => { const res = Matrix.square(1, new Complex(2, 3), -5.5, 0) @@ -128,8 +115,6 @@ describe('Matrix', () => { }) test('trace', () => { - expect(Matrix.identity(2)._unsafeUnwrap().trace().eq(2)).toBeTruthy() - expect(Matrix.identity(10)._unsafeUnwrap().trace().eq(10)).toBeTruthy() expect(X.trace().eq(0)).toBeTruthy() expect(Y.trace().eq(0)).toBeTruthy() expect(Z.trace().eq(0)).toBeTruthy() @@ -201,7 +186,17 @@ describe('Matrix', () => { ).toBeTruthy() const x = squareMatrix(new Complex(0.5, -0.5), new Complex(0.5, 0.5), new Complex(0.5, 0.5), new Complex(0.5, -0.5)) - expect(x.mult(x.adjoint())._unsafeUnwrap().eq(Matrix.identity(2)._unsafeUnwrap())).toBeTruthy() + expect( + x + .mult(x.adjoint()) + ._unsafeUnwrap() + .eq( + Matrix.rows([ + [1, 0], + [0, 1], + ])._unsafeUnwrap(), + ), + ).toBeTruthy() expect( X.mult(Y) ._unsafeUnwrap() @@ -209,7 +204,12 @@ describe('Matrix', () => { ._unsafeUnwrap() .mult(new Complex(0, -1)) ._unsafeUnwrap() - .eq(Matrix.identity(2)._unsafeUnwrap()), + .eq( + Matrix.rows([ + [1, 0], + [0, 1], + ])._unsafeUnwrap(), + ), ).toBeTruthy() }) @@ -349,7 +349,6 @@ describe('Matrix', () => { equate(squareMatrix(1, 0, new Complex(0, -1), new Complex(2, -3)).format(), '{{1, 0}, {-i, 2-3i}}'), ).toBeTruthy() expect(equate(squareMatrix(1, 0, 0, 1).format(), '{{1, 0}, {0, 1}}')).toBeTruthy() - expect(equate(Matrix.identity(3)._unsafeUnwrap().format(), '{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}')).toBeTruthy() expect( equate( @@ -391,7 +390,6 @@ describe('Matrix', () => { equate(squareMatrix(1, 0, new Complex(0, -1), new Complex(2, -3)).toString(), '{{1, 0}, {-i, 2-3i}}'), ).toBeTruthy() expect(equate(squareMatrix(1, 0, 0, 1).toString(), '{{1, 0}, {0, 1}}')).toBeTruthy() - expect(equate(Matrix.identity(3)._unsafeUnwrap().toString(), '{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}')).toBeTruthy() }) test('size', () => { @@ -429,14 +427,31 @@ describe('Matrix', () => { test('qubitDensityMatrixToBlochVector', () => { expect(() => Matrix.column_vector(1)._unsafeUnwrap().qubitDensityMatrixToBlochVector()).toThrow() expect(() => squareMatrix(1, 0, 0, 0, 0, 0, 0, 0, 0).qubitDensityMatrixToBlochVector()).toThrow() - expect(() => Matrix.identity(2)._unsafeUnwrap().qubitDensityMatrixToBlochVector()).toThrow() + expect(() => + Matrix.rows([ + [1, 0], + [0, 1], + ]) + ._unsafeUnwrap() + .qubitDensityMatrixToBlochVector(), + ).toThrow() expect(() => squareMatrix(1, 1, -1, 0).qubitDensityMatrixToBlochVector()).toThrow() expect(() => squareMatrix(1, 1, 0, 0).qubitDensityMatrixToBlochVector()).toThrow() expect(() => squareMatrix(1, Complex.I, Complex.I, 0).qubitDensityMatrixToBlochVector()).toThrow() // Maximally mixed state. expect( - equate(Matrix.identity(2)._unsafeUnwrap().mult(0.5)._unsafeUnwrap().qubitDensityMatrixToBlochVector(), [0, 0, 0]), + equate( + Matrix.rows([ + [1, 0], + [0, 1], + ]) + ._unsafeUnwrap() + .mult(0.5) + ._unsafeUnwrap() + .qubitDensityMatrixToBlochVector(), + [0, 0, 0], + ), ).toBeTruthy() // Pure states as vectors along each axis.