@actual-app/web 23.8.1 → 23.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -1
- package/build/apple-touch-icon.png +0 -0
- package/build/asset-manifest.json +25 -25
- package/build/index.html +1 -1
- package/build/kcab/kcab.worker.b835d2cdcf8004c363da.js +250 -0
- package/build/kcab/kcab.worker.b835d2cdcf8004c363da.js.map +1 -0
- package/build/kcab/xfo.xfo.kcab.worker.2ee5d7175d50b7896f28.js +1 -0
- package/build/static/css/main.476f35a5.css +359 -0
- package/build/static/css/main.476f35a5.css.map +1 -0
- package/build/static/js/231.370f17f8.chunk.js +2 -0
- package/build/static/js/231.370f17f8.chunk.js.map +1 -0
- package/build/static/js/389.c8f94185.chunk.js +2 -0
- package/build/static/js/389.c8f94185.chunk.js.map +1 -0
- package/build/static/js/473.02c273e8.chunk.js +2 -0
- package/build/static/js/473.02c273e8.chunk.js.map +1 -0
- package/build/static/js/678.bf349f5d.chunk.js +2 -0
- package/build/static/js/678.bf349f5d.chunk.js.map +1 -0
- package/build/static/js/713.1731d555.chunk.js +15 -0
- package/build/static/js/713.1731d555.chunk.js.map +1 -0
- package/build/static/js/main.7e6eedd0.js +188 -0
- package/build/static/js/main.7e6eedd0.js.map +1 -0
- package/build/static/js/narrow-components.11cf3591.chunk.js +2 -0
- package/build/static/js/narrow-components.11cf3591.chunk.js.map +1 -0
- package/build/static/js/reports.39b7254a.chunk.js +2 -0
- package/build/static/js/reports.39b7254a.chunk.js.map +1 -0
- package/build/static/js/resize-observer-polyfill.98a18736.chunk.js +2 -0
- package/build/static/js/resize-observer-polyfill.98a18736.chunk.js.map +1 -0
- package/build/static/js/wide-components.fd8595f4.chunk.js +2 -0
- package/build/static/js/wide-components.fd8595f4.chunk.js.map +1 -0
- package/build/static/media/browser-server.20abc230cfc504c53fa0.js +1 -0
- package/package.json +25 -19
- package/build/kcab/kcab.worker.61dd77d50c3de3a5c965.js +0 -3
- package/build/kcab/kcab.worker.61dd77d50c3de3a5c965.js.LICENSE.txt +0 -24
- package/build/kcab/kcab.worker.61dd77d50c3de3a5c965.js.map +0 -1
- package/build/kcab/xfo.xfo.kcab.worker.e800a4a41b9557f2726d.js +0 -1
- package/build/static/css/main.90cc2688.css +0 -7
- package/build/static/css/main.90cc2688.css.map +0 -1
- package/build/static/js/281.6bb03bd1.chunk.js +0 -2
- package/build/static/js/281.6bb03bd1.chunk.js.map +0 -1
- package/build/static/js/383.1b04bac1.chunk.js +0 -2
- package/build/static/js/383.1b04bac1.chunk.js.map +0 -1
- package/build/static/js/457.4c255aed.chunk.js +0 -2
- package/build/static/js/457.4c255aed.chunk.js.map +0 -1
- package/build/static/js/876.00fe0e63.chunk.js +0 -2
- package/build/static/js/876.00fe0e63.chunk.js.map +0 -1
- package/build/static/js/969.b56f4e53.chunk.js +0 -2
- package/build/static/js/969.b56f4e53.chunk.js.map +0 -1
- package/build/static/js/main.b9496410.js +0 -3
- package/build/static/js/main.b9496410.js.LICENSE.txt +0 -178
- package/build/static/js/main.b9496410.js.map +0 -1
- package/build/static/js/narrow-components.55a3b7fd.chunk.js +0 -2
- package/build/static/js/narrow-components.55a3b7fd.chunk.js.map +0 -1
- package/build/static/js/reports.689f3940.chunk.js +0 -2
- package/build/static/js/reports.689f3940.chunk.js.map +0 -1
- package/build/static/js/resize-observer-polyfill.68c3249b.chunk.js +0 -2
- package/build/static/js/resize-observer-polyfill.68c3249b.chunk.js.map +0 -1
- package/build/static/js/wide-components.e3cfa9ca.chunk.js +0 -2
- package/build/static/js/wide-components.e3cfa9ca.chunk.js.map +0 -1
- package/build/static/media/browser-server.14ed34b8682d7b10163f.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self["webpackChunk_actual_app_web"]=self["webpackChunk_actual_app_web"]||[]).push([[389],{30076:function(e,t,l){l.d(t,{Z:function(){return i}});var n=l(43188);var r=l(66204);var a=l(63541);function i({width:e,onClose:t,children:l}){return(0,n.jsx)(a.u,{position:"bottom-right",width:e,style:{padding:0},onClose:t,children:l})}},993:function(e,t,l){l.d(t,{M:function(){return A},L:function(){return W}});var n=l(43188);var r=l(66204);var a=l(37496);var i=l(14313);var s=l(8780);var o=l(25432);var d=l(79982);var u=l(17853);var c=l(84094);var f=l(73416);var p=l(3189);var x=l(89362);var h=l(40233);const m=e=>(0,n.jsx)("svg",{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:{color:"inherit",...e.style},children:(0,n.jsx)("path",{fill:"currentColor",d:"M4.5 17.5h6.646a3.5 3.5 0 0 0 6.708 0H19.5a1 1 0 0 0 0-2h-1.646a3.5 3.5 0 0 0-6.708 0H4.5a1 1 0 0 0 0 2Zm10-2.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM19.5 6.5h-6.646a3.5 3.5 0 0 0-6.708 0H4.5a1 1 0 0 0 0 2h1.646a3.5 3.5 0 0 0 6.708 0H19.5a1 1 0 1 0 0-2ZM9.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Z"})});var v=m;var y=l(45492);var g=l(56816);var j=l(31941);var w=l(78628);var Z=l(84196);var C=l(77644);var b=l(24307);var S=l(99012);var k=l(63541);var O=l(54923);var R=l(1482);let T=["date","account","payee","notes","category","amount","cleared","saved"].map(e=>[e,(0,p.gL)(e)]);function M({field:e,options:t,value:l}){if(e==="date"){if(l.length===7){return"month"}else if(l.length===4){return"year"}}else if(e==="amount"){if(t&&t.inflow){return"amount-inflow"}else if(t&&t.outflow){return"amount-outflow"}}return e}function L(e,t){switch(e){case"amount":switch(t){case"amount-inflow":return{inflow:true};case"amount-outflow":return{outflow:true};default:return null}case"date":switch(t){case"month":return{month:true};case"year":return{year:true};default:return null}default:return null}}function D({op:e,selected:t,style:l,onClick:r}){return(0,n.jsx)(g.Z,{type:"bare",style:{backgroundColor:y.rS.altbuttonMenuBackground,marginBottom:5,...l,...t&&{color:y.rS.buttonNormalSelectedText,"&,:hover,:active":{backgroundColor:y.rS.buttonNormalSelectedBackground,color:y.rS.buttonNormalSelectedText}}},onClick:r,children:(0,p.w8)(e)})}function N(e,t){switch(t.type){case"set-op":{let l=p.Z9.get(e.field);let n=e.value;if((l==="id"||l==="string")&&(t.op==="contains"||t.op==="is"||t.op==="doesNotContain"||t.op==="isNot")){n=null}return{...e,op:t.op,value:n}}case"set-value":{let{value:l}=(0,p.l1)(t.value,{type:p.Z9.get(e.field)});return{...e,value:l}}default:throw new Error(`Unhandled action type: ${t.type}`)}}function F({field:e,initialSubfield:t=e,op:l,value:a,dispatch:s,onApply:o}){let[d,u]=(0,r.useState)(t);let c=(0,r.useRef)();let f=(0,r.useRef)(null);(0,r.useEffect)(()=>{if(f.current!==l&&c.current){c.current.focus()}f.current=l},[l]);let h=p.Z9.get(e);let m=p.wZ[h].ops.filter(e=>e!=="isbetween");if(d==="month"||d==="year"){m=["is"]}return(0,n.jsx)(k.u,{position:"bottom-left",style:{padding:15,color:y.rS.altmenuItemTextHeader},width:275,onClose:()=>s({type:"close"}),"data-testid":"filters-menu-tooltip",children:(0,n.jsxs)(i.MT,{children:[(0,n.jsx)(b.Z,{style:{marginBottom:10},children:(0,n.jsxs)(Z.Z,{direction:"row",align:"flex-start",children:[e==="amount"||e==="date"?(0,n.jsx)(w.Z,{bare:true,options:e==="amount"?[["amount","Amount"],["amount-inflow","Amount (inflow)"],["amount-outflow","Amount (outflow)"]]:e==="date"?[["date","Date"],["month","Month"],["year","Year"]]:null,value:d,onChange:e=>{u(e);if(e==="month"||e==="year"){s({type:"set-op",op:"is"})}},style:{borderWidth:1}}):(0,x.VL)((0,p.gL)(e)),(0,n.jsx)(b.Z,{style:{flex:1}})]})}),(0,n.jsx)(b.Z,{style:{color:y.rS.pageTextLight,marginBottom:10},children:e==="saved"&&"Existing filters will be cleared"}),(0,n.jsx)(Z.Z,{direction:"row",align:"flex-start",spacing:1,style:{flexWrap:"wrap"},children:h==="boolean"?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D,{op:"true",selected:a===true,onClick:()=>{s({type:"set-op",op:"is"});s({type:"set-value",value:true})}},"true"),(0,n.jsx)(D,{op:"false",selected:a===false,onClick:()=>{s({type:"set-op",op:"is"});s({type:"set-value",value:false})}},"false")]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(Z.Z,{direction:"row",align:"flex-start",spacing:1,style:{flexWrap:"wrap"},children:m.slice(0,3).map(e=>(0,n.jsx)(D,{op:e,selected:e===l,onClick:()=>s({type:"set-op",op:e})},e))}),(0,n.jsx)(Z.Z,{direction:"row",align:"flex-start",spacing:1,style:{flexWrap:"wrap"},children:m.slice(3,m.length).map(e=>(0,n.jsx)(D,{op:e,selected:e===l,onClick:()=>s({type:"set-op",op:e})},e))})]})}),(0,n.jsxs)("form",{action:"#",children:[h!=="boolean"&&(0,n.jsx)(O.Z,{inputRef:c,field:e,subfield:d,type:h==="id"&&(l==="contains"||l==="doesNotContain")?"string":h,value:a,multi:l==="oneOf"||l==="notOneOf",style:{marginTop:10},onChange:e=>s({type:"set-value",value:e})}),(0,n.jsxs)(Z.Z,{direction:"row",justify:"flex-end",align:"center",style:{marginTop:15},children:[(0,n.jsx)(b.Z,{style:{flex:1}}),(0,n.jsx)(g.Z,{type:"primary",onClick:t=>{t.preventDefault();o({field:e,op:l,value:a,options:L(e,d)})},children:"Apply"})]})]})]})})}function W({onApply:e}){let t=(0,u.m)();let{dateFormat:l}=(0,a.v9)(e=>{return{dateFormat:e.prefs.local.dateFormat||"MM/dd/yyyy"}});let[i,h]=(0,r.useReducer)((e,t)=>{switch(t.type){case"select-field":return{...e,fieldsOpen:true,condOpen:false};case"configure":{let{field:l}=(0,p.Z)(t.field);let n=p.Z9.get(l);let r=p.wZ[n].ops;return{...e,fieldsOpen:false,condOpen:true,field:t.field,op:r[0],value:n==="boolean"?true:null}}case"close":return{fieldsOpen:false,condOpen:false,value:null};default:return N(e,t)}},{fieldsOpen:false,condOpen:false,field:null,value:null});async function m(n){n=(0,p.Z2)({...n,type:p.Z9.get(n.field)});if(n.type==="date"&&n.options){if(n.options.month){let e=(0,s.Z)(n.value,(0,f.LT)(l),new Date);if((0,o.Z)(e)){n.value=(0,d.Z)(e,"yyyy-MM")}else{alert("Invalid date format");return}}else if(n.options.year){let e=(0,s.Z)(n.value,"yyyy",new Date);if((0,o.Z)(e)){n.value=(0,d.Z)(e,"yyyy")}else{alert("Invalid date format");return}}}let{error:r}=n.field!=="saved"&&await (0,c.lW)("rule-validate",{conditions:[n],actions:[]});let a=t.find(e=>n.value===e.id);if(r&&r.conditionErrors.length>0){let e=(0,x.VL)((0,p.gL)(n.field));alert(e+": "+(0,p.zQ)(r.conditionErrors[0]))}else{e(a?a:n);h({type:"close"})}}return(0,n.jsxs)(b.Z,{children:[(0,n.jsxs)(g.Z,{type:"bare",onClick:()=>h({type:"select-field"}),children:[(0,n.jsx)(v,{style:{width:16,height:16,marginRight:5}})," ","Filter"]}),i.fieldsOpen&&(0,n.jsx)(k.u,{position:"bottom-left",style:{padding:0},onClose:()=>h({type:"close"}),"data-testid":"filters-select-tooltip",children:(0,n.jsx)(j.Z,{onMenuSelect:e=>{h({type:"configure",field:e})},items:T.map(([e,t])=>({name:e,text:(0,x.VL)(t)}))})}),i.condOpen&&(0,n.jsx)(F,{field:i.field,op:i.op,value:i.value,dispatch:h,onApply:m})]})}function B({field:e,op:t,value:l,options:a,onSave:i,onClose:s}){let[o,d]=(0,r.useReducer)((e,t)=>{switch(t.type){case"close":s();return e;default:return N(e,t)}},{field:e,op:t,value:l,options:a});return(0,n.jsx)(F,{field:o.field,initialSubfield:M({field:e,options:a,value:l}),op:o.op,value:o.value,options:o.options,dispatch:d,onApply:e=>{i(e);s()}})}function I({field:e,customName:t,op:l,value:a,options:i,stage:s,style:o,onChange:d,onDelete:u}){let[c,f]=(0,r.useState)(false);let x=M({field:e,value:a});return(0,n.jsxs)(b.Z,{style:{backgroundColor:y.rS.pillBackground,borderRadius:4,flexDirection:"row",alignItems:"center",marginRight:10,marginTop:10,...o},children:[(0,n.jsx)(g.Z,{type:"bare",disabled:t!=null,onClick:()=>f(true),style:{marginRight:-7},children:(0,n.jsx)("div",{style:{paddingBlock:1,paddingLeft:5,paddingRight:2},children:t?(0,n.jsx)(C.Z,{style:{color:y.rS.pageTextPositive},children:t}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(C.Z,{style:{color:y.rS.pageTextPositive},children:(0,p.gL)(x,i)})," ",(0,n.jsx)(C.Z,{children:(0,p.w8)(l,null)})," ",(0,n.jsx)(S.Z,{value:a,field:x,inline:true,valueIsRaw:l==="contains"||l==="doesNotContain"})]})})}),(0,n.jsx)(g.Z,{type:"bare",onClick:u,"aria-label":"Delete filter",children:(0,n.jsx)(h.Z,{style:{width:8,height:8,margin:5,marginLeft:3}})}),c&&(0,n.jsx)(B,{field:e,customName:t,op:l,value:a,options:i,stage:s,onSave:d,onClose:()=>f(false)})]})}function A({filters:e,editingFilter:t,onUpdate:l,onDelete:r,conditionsOp:a,onCondOpChange:i}){return(0,n.jsxs)(b.Z,{style:{flexDirection:"row",alignItems:"flex-start",flexWrap:"wrap"},children:[(0,n.jsx)(R.a,{conditionsOp:a,onCondOpChange:i,filters:e}),e.map((e,a)=>(0,n.jsx)(I,{customName:e.customName,field:e.field,op:e.op,value:e.value,options:e.options,editing:t===e,onChange:t=>l(e,t),onDelete:()=>r(e)},a))]})}},1482:function(e,t,l){l.d(t,{O:function(){return j},a:function(){return g}});var n=l(43188);var r=l(66204);var a=l(84094);var i=l(32951);var s=l(45492);var o=l(56816);var d=l(31941);var u=l(30076);var c=l(84196);var f=l(77644);var p=l(24307);var x=l(10730);var h=l(24605);var m=l(54923);var v=l(993);function y({filters:e,conditionsOp:t,filterId:l,onClearFilters:h,onReloadSavedFilter:v,filtersList:y}){let[g,j]=(0,r.useState)(false);let[w,Z]=(0,r.useState)(false);let[C,b]=(0,r.useState)(false);let[S,k]=(0,r.useState)(null);let[O,R]=(0,r.useState)(null);let T=(0,r.useRef)();let M=l.name;let L=l.id;let D;let N;(0,r.useEffect)(()=>{if(T.current){T.current.focus()}},[I]);const F=async n=>{R(n);switch(n){case"rename-filter":k(null);Z(false);b(false);j(true);break;case"delete-filter":b(false);await (0,a.lW)("filter-delete",L);h();break;case"update-filter":k(null);Z(false);b(false);N={conditions:e,conditionsOp:t,id:l.id,name:l.name,status:"saved"};D=await (0,a.OK)("filter-update",{state:N,filters:[...y]});if(D.error){k(D.error.message);j(true)}else{v(N,"update")}break;case"save-filter":k(null);Z(true);b(false);j(true);break;case"reload-filter":b(false);N={status:"saved"};v(N,"reload");break;case"clear-filter":b(false);h();break;default:}};function W({onClose:e,filterId:t}){return(0,n.jsx)(u.Z,{width:200,onClose:e,children:(0,n.jsx)(d.Z,{onMenuSelect:e=>{F(e)},items:[...!t.id?[{name:"save-filter",text:"Save new filter"},{name:"clear-filter",text:"Clear all conditions"}]:[...t.id!==null&&t.status==="saved"?[{name:"rename-filter",text:"Rename"},{name:"delete-filter",text:"Delete"},d.Z.line,{name:"save-filter",text:"Save new filter",disabled:true},{name:"clear-filter",text:"Clear all conditions"}]:[{name:"rename-filter",text:"Rename"},{name:"update-filter",text:"Update condtions"},{name:"reload-filter",text:"Revert changes"},{name:"delete-filter",text:"Delete"},d.Z.line,{name:"save-filter",text:"Save new filter"},{name:"clear-filter",text:"Clear all conditions"}]]]})})}async function B(){if(w){N={conditions:e,conditionsOp:t,name:M,status:"saved"};D=await (0,a.OK)("filter-create",{state:N,filters:[...y]});N={...N,id:D.data}}else{N={conditions:l.conditions,conditionsOp:l.conditionsOp,id:l.id,name:M};D=await (0,a.OK)("filter-update",{state:N,filters:[...y]})}if(D.error){k(D.error.message)}else{j(false);v(N)}}function I({onClose:e}){return(0,n.jsxs)(u.Z,{width:325,onClose:e,children:[O!=="update-filter"&&(0,n.jsx)("form",{children:(0,n.jsxs)(c.Z,{direction:"row",justify:"flex-end",align:"center",style:{padding:10},children:[(0,n.jsxs)(x.Wi,{style:{flex:1},children:[(0,n.jsx)(x.lX,{title:"Filter Name",htmlFor:"name-field",style:{userSelect:"none"}}),(0,n.jsx)(m.Z,{inputRef:T,id:"name-field",field:"string",type:"string",value:M,onChange:e=>M=e})]}),(0,n.jsx)(o.Z,{type:"primary",style:{marginTop:18},onClick:e=>{e.preventDefault();B()},children:w?"Add":"Update"})]})}),S&&(0,n.jsx)(c.Z,{direction:"row",align:"center",style:{padding:10},children:(0,n.jsx)(f.Z,{style:{color:s.rS.errorText},children:S})})]})}return(0,n.jsxs)(p.Z,{children:[e.length>0&&(0,n.jsxs)(o.Z,{type:"bare",style:{marginTop:10},onClick:()=>{b(true)},children:[(0,n.jsxs)(f.Z,{style:{maxWidth:150,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",flexShrink:0},children:[!l.id?"Unsaved filter":l.name,"\xa0"]}),l.id&&l.status!=="saved"&&(0,n.jsx)(f.Z,{children:"(modified)\xa0"}),(0,n.jsx)(i.Z,{width:8,height:8,style:{marginRight:5}})]}),C&&(0,n.jsx)(W,{onClose:()=>b(false),filterId:l}),g&&(0,n.jsx)(I,{onClose:()=>j(false)})]})}function g({conditionsOp:e,onCondOpChange:t,filters:l}){return l.length>1&&(0,n.jsxs)(f.Z,{style:{color:s.rS.pageText,marginTop:11,marginRight:5},children:[(0,n.jsx)(h.Wy,{style:{display:"inline-flex"},fields:[["and","all"],["or","any"]],value:e,onChange:(e,n)=>t(n,l)}),"of:"]})}function j({filters:e,conditionsOp:t,onUpdateFilter:l,onDeleteFilter:r,onClearFilters:a,onReloadSavedFilter:i,filterId:s,filtersList:o,onCondOpChange:d}){return(0,n.jsx)(p.Z,{children:(0,n.jsxs)(c.Z,{spacing:2,direction:"row",justify:"flex-start",align:"flex-start",children:[(0,n.jsx)(v.M,{filters:e,conditionsOp:t,onCondOpChange:d,onUpdate:l,onDelete:r}),(0,n.jsx)(p.Z,{style:{flex:1}}),(0,n.jsx)(y,{filters:e,conditionsOp:t,filterId:s,onClearFilters:a,onReloadSavedFilter:i,filtersList:o})]})})}}}]);
|
|
2
|
+
//# sourceMappingURL=389.c8f94185.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/389.c8f94185.chunk.js","mappings":"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","sources":["components/common/MenuTooltip.tsx","icons/v2/SettingsSliderAlternate.js","components/filters/FiltersMenu.js","components/filters/SavedFilters.js"],"sourcesContent":["import React from 'react';\n\nimport { Tooltip } from '../tooltips';\n\nexport default function MenuTooltip({ width, onClose, children }) {\n return (\n <Tooltip\n position=\"bottom-right\"\n width={width}\n style={{ padding: 0 }}\n onClose={onClose}\n >\n {children}\n </Tooltip>\n );\n}\n","import * as React from 'react';\nconst SvgSettingsSliderAlternate = props => (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n style={{\n color: 'inherit',\n ...props.style,\n }}\n >\n <path\n fill=\"currentColor\"\n d=\"M4.5 17.5h6.646a3.5 3.5 0 0 0 6.708 0H19.5a1 1 0 0 0 0-2h-1.646a3.5 3.5 0 0 0-6.708 0H4.5a1 1 0 0 0 0 2Zm10-2.5a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM19.5 6.5h-6.646a3.5 3.5 0 0 0-6.708 0H4.5a1 1 0 0 0 0 2h1.646a3.5 3.5 0 0 0 6.708 0H19.5a1 1 0 1 0 0-2ZM9.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3Z\"\n />\n </svg>\n);\nexport default SvgSettingsSliderAlternate;\n","import React, { useState, useRef, useEffect, useReducer } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { FocusScope } from '@react-aria/focus';\nimport {\n parse as parseDate,\n format as formatDate,\n isValid as isDateValid,\n} from 'date-fns';\n\nimport { useFilters } from 'loot-core/src/client/data-hooks/filters';\nimport { send } from 'loot-core/src/platform/client/fetch';\nimport { getMonthYearFormat } from 'loot-core/src/shared/months';\nimport {\n mapField,\n friendlyOp,\n deserializeField,\n getFieldError,\n unparse,\n makeValue,\n FIELD_TYPES,\n TYPE_INFO,\n} from 'loot-core/src/shared/rules';\nimport { titleFirst } from 'loot-core/src/shared/util';\n\nimport DeleteIcon from '../../icons/v0/Delete';\nimport SettingsSliderAlternate from '../../icons/v2/SettingsSliderAlternate';\nimport { theme } from '../../style';\nimport Button from '../common/Button';\nimport Menu from '../common/Menu';\nimport Select from '../common/Select';\nimport Stack from '../common/Stack';\nimport Text from '../common/Text';\nimport View from '../common/View';\nimport Value from '../rules/Value';\nimport { Tooltip } from '../tooltips';\nimport GenericInput from '../util/GenericInput';\n\nimport { CondOpMenu } from './SavedFilters';\n\nlet filterFields = [\n 'date',\n 'account',\n 'payee',\n 'notes',\n 'category',\n 'amount',\n 'cleared',\n 'saved',\n].map(field => [field, mapField(field)]);\n\nfunction subfieldFromFilter({ field, options, value }) {\n if (field === 'date') {\n if (value.length === 7) {\n return 'month';\n } else if (value.length === 4) {\n return 'year';\n }\n } else if (field === 'amount') {\n if (options && options.inflow) {\n return 'amount-inflow';\n } else if (options && options.outflow) {\n return 'amount-outflow';\n }\n }\n return field;\n}\n\nfunction subfieldToOptions(field, subfield) {\n switch (field) {\n case 'amount':\n switch (subfield) {\n case 'amount-inflow':\n return { inflow: true };\n case 'amount-outflow':\n return { outflow: true };\n default:\n return null;\n }\n case 'date':\n switch (subfield) {\n case 'month':\n return { month: true };\n case 'year':\n return { year: true };\n default:\n return null;\n }\n default:\n return null;\n }\n}\n\nfunction OpButton({ op, selected, style, onClick }) {\n return (\n <Button\n type=\"bare\"\n style={{\n backgroundColor: theme.altbuttonMenuBackground,\n marginBottom: 5,\n ...style,\n ...(selected && {\n color: theme.buttonNormalSelectedText,\n '&,:hover,:active': {\n backgroundColor: theme.buttonNormalSelectedBackground,\n color: theme.buttonNormalSelectedText,\n },\n }),\n }}\n onClick={onClick}\n >\n {friendlyOp(op)}\n </Button>\n );\n}\n\nfunction updateFilterReducer(state, action) {\n switch (action.type) {\n case 'set-op': {\n let type = FIELD_TYPES.get(state.field);\n let value = state.value;\n if (\n (type === 'id' || type === 'string') &&\n (action.op === 'contains' ||\n action.op === 'is' ||\n action.op === 'doesNotContain' ||\n action.op === 'isNot')\n ) {\n // Clear out the value if switching between contains or\n // is/oneof for the id or string type\n value = null;\n }\n return { ...state, op: action.op, value };\n }\n case 'set-value': {\n let { value } = makeValue(action.value, {\n type: FIELD_TYPES.get(state.field),\n });\n return { ...state, value: value };\n }\n default:\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n}\n\nfunction ConfigureField({\n field,\n initialSubfield = field,\n op,\n value,\n dispatch,\n onApply,\n}) {\n let [subfield, setSubfield] = useState(initialSubfield);\n let inputRef = useRef();\n let prevOp = useRef(null);\n\n useEffect(() => {\n if (prevOp.current !== op && inputRef.current) {\n inputRef.current.focus();\n }\n prevOp.current = op;\n }, [op]);\n\n let type = FIELD_TYPES.get(field);\n let ops = TYPE_INFO[type].ops.filter(op => op !== 'isbetween');\n\n // Month and year fields are quite hacky right now! Figure out how\n // to clean this up later\n if (subfield === 'month' || subfield === 'year') {\n ops = ['is'];\n }\n\n return (\n <Tooltip\n position=\"bottom-left\"\n style={{ padding: 15, color: theme.altmenuItemTextHeader }}\n width={275}\n onClose={() => dispatch({ type: 'close' })}\n data-testid=\"filters-menu-tooltip\"\n >\n <FocusScope>\n <View style={{ marginBottom: 10 }}>\n <Stack direction=\"row\" align=\"flex-start\">\n {field === 'amount' || field === 'date' ? (\n <Select\n bare\n options={\n field === 'amount'\n ? [\n ['amount', 'Amount'],\n ['amount-inflow', 'Amount (inflow)'],\n ['amount-outflow', 'Amount (outflow)'],\n ]\n : field === 'date'\n ? [\n ['date', 'Date'],\n ['month', 'Month'],\n ['year', 'Year'],\n ]\n : null\n }\n value={subfield}\n onChange={sub => {\n setSubfield(sub);\n\n if (sub === 'month' || sub === 'year') {\n dispatch({ type: 'set-op', op: 'is' });\n }\n }}\n style={{ borderWidth: 1 }}\n />\n ) : (\n titleFirst(mapField(field))\n )}\n <View style={{ flex: 1 }} />\n </Stack>\n </View>\n\n <View\n style={{\n color: theme.pageTextLight,\n marginBottom: 10,\n }}\n >\n {field === 'saved' && 'Existing filters will be cleared'}\n </View>\n\n <Stack\n direction=\"row\"\n align=\"flex-start\"\n spacing={1}\n style={{ flexWrap: 'wrap' }}\n >\n {type === 'boolean' ? (\n <>\n <OpButton\n key=\"true\"\n op=\"true\"\n selected={value === true}\n onClick={() => {\n dispatch({ type: 'set-op', op: 'is' });\n dispatch({ type: 'set-value', value: true });\n }}\n />\n <OpButton\n key=\"false\"\n op=\"false\"\n selected={value === false}\n onClick={() => {\n dispatch({ type: 'set-op', op: 'is' });\n dispatch({ type: 'set-value', value: false });\n }}\n />\n </>\n ) : (\n <>\n <Stack\n direction=\"row\"\n align=\"flex-start\"\n spacing={1}\n style={{ flexWrap: 'wrap' }}\n >\n {ops.slice(0, 3).map(currOp => (\n <OpButton\n key={currOp}\n op={currOp}\n selected={currOp === op}\n onClick={() => dispatch({ type: 'set-op', op: currOp })}\n />\n ))}\n </Stack>\n <Stack\n direction=\"row\"\n align=\"flex-start\"\n spacing={1}\n style={{ flexWrap: 'wrap' }}\n >\n {ops.slice(3, ops.length).map(currOp => (\n <OpButton\n key={currOp}\n op={currOp}\n selected={currOp === op}\n onClick={() => dispatch({ type: 'set-op', op: currOp })}\n />\n ))}\n </Stack>\n </>\n )}\n </Stack>\n\n <form action=\"#\">\n {type !== 'boolean' && (\n <GenericInput\n inputRef={inputRef}\n field={field}\n subfield={subfield}\n type={\n type === 'id' && (op === 'contains' || op === 'doesNotContain')\n ? 'string'\n : type\n }\n value={value}\n multi={op === 'oneOf' || op === 'notOneOf'}\n style={{ marginTop: 10 }}\n onChange={v => dispatch({ type: 'set-value', value: v })}\n />\n )}\n\n <Stack\n direction=\"row\"\n justify=\"flex-end\"\n align=\"center\"\n style={{ marginTop: 15 }}\n >\n <View style={{ flex: 1 }} />\n <Button\n type=\"primary\"\n onClick={e => {\n e.preventDefault();\n onApply({\n field,\n op,\n value,\n options: subfieldToOptions(field, subfield),\n });\n }}\n >\n Apply\n </Button>\n </Stack>\n </form>\n </FocusScope>\n </Tooltip>\n );\n}\n\nexport function FilterButton({ onApply }) {\n let filters = useFilters();\n\n let { dateFormat } = useSelector(state => {\n return {\n dateFormat: state.prefs.local.dateFormat || 'MM/dd/yyyy',\n };\n });\n\n let [state, dispatch] = useReducer(\n (state, action) => {\n switch (action.type) {\n case 'select-field':\n return { ...state, fieldsOpen: true, condOpen: false };\n case 'configure': {\n let { field } = deserializeField(action.field);\n let type = FIELD_TYPES.get(field);\n let ops = TYPE_INFO[type].ops;\n return {\n ...state,\n fieldsOpen: false,\n condOpen: true,\n field: action.field,\n op: ops[0],\n value: type === 'boolean' ? true : null,\n };\n }\n case 'close':\n return { fieldsOpen: false, condOpen: false, value: null };\n default:\n return updateFilterReducer(state, action);\n }\n },\n { fieldsOpen: false, condOpen: false, field: null, value: null },\n );\n\n async function onValidateAndApply(cond) {\n cond = unparse({ ...cond, type: FIELD_TYPES.get(cond.field) });\n\n if (cond.type === 'date' && cond.options) {\n if (cond.options.month) {\n let date = parseDate(\n cond.value,\n getMonthYearFormat(dateFormat),\n new Date(),\n );\n if (isDateValid(date)) {\n cond.value = formatDate(date, 'yyyy-MM');\n } else {\n alert('Invalid date format');\n return;\n }\n } else if (cond.options.year) {\n let date = parseDate(cond.value, 'yyyy', new Date());\n if (isDateValid(date)) {\n cond.value = formatDate(date, 'yyyy');\n } else {\n alert('Invalid date format');\n return;\n }\n }\n }\n\n let { error } =\n cond.field !== 'saved' &&\n (await send('rule-validate', {\n conditions: [cond],\n actions: [],\n }));\n\n let saved = filters.find(f => cond.value === f.id);\n\n if (error && error.conditionErrors.length > 0) {\n let field = titleFirst(mapField(cond.field));\n alert(field + ': ' + getFieldError(error.conditionErrors[0]));\n } else {\n onApply(saved ? saved : cond);\n dispatch({ type: 'close' });\n }\n }\n\n return (\n <View>\n <Button type=\"bare\" onClick={() => dispatch({ type: 'select-field' })}>\n <SettingsSliderAlternate\n style={{ width: 16, height: 16, marginRight: 5 }}\n />{' '}\n Filter\n </Button>\n {state.fieldsOpen && (\n <Tooltip\n position=\"bottom-left\"\n style={{ padding: 0 }}\n onClose={() => dispatch({ type: 'close' })}\n data-testid=\"filters-select-tooltip\"\n >\n <Menu\n onMenuSelect={name => {\n dispatch({ type: 'configure', field: name });\n }}\n items={filterFields.map(([name, text]) => ({\n name: name,\n text: titleFirst(text),\n }))}\n />\n </Tooltip>\n )}\n {state.condOpen && (\n <ConfigureField\n field={state.field}\n op={state.op}\n value={state.value}\n dispatch={dispatch}\n onApply={onValidateAndApply}\n />\n )}\n </View>\n );\n}\n\nfunction FilterEditor({ field, op, value, options, onSave, onClose }) {\n let [state, dispatch] = useReducer(\n (state, action) => {\n switch (action.type) {\n case 'close':\n onClose();\n return state;\n default:\n return updateFilterReducer(state, action);\n }\n },\n { field, op, value, options },\n );\n\n return (\n <ConfigureField\n field={state.field}\n initialSubfield={subfieldFromFilter({ field, options, value })}\n op={state.op}\n value={state.value}\n options={state.options}\n dispatch={dispatch}\n onApply={cond => {\n onSave(cond);\n onClose();\n }}\n />\n );\n}\n\nfunction FilterExpression({\n field: originalField,\n customName,\n op,\n value,\n options,\n stage,\n style,\n onChange,\n onDelete,\n}) {\n let [editing, setEditing] = useState(false);\n\n let field = subfieldFromFilter({ field: originalField, value });\n\n return (\n <View\n style={{\n backgroundColor: theme.pillBackground,\n borderRadius: 4,\n flexDirection: 'row',\n alignItems: 'center',\n marginRight: 10,\n marginTop: 10,\n ...style,\n }}\n >\n <Button\n type=\"bare\"\n disabled={customName != null}\n onClick={() => setEditing(true)}\n style={{ marginRight: -7 }}\n >\n <div style={{ paddingBlock: 1, paddingLeft: 5, paddingRight: 2 }}>\n {customName ? (\n <Text style={{ color: theme.pageTextPositive }}>{customName}</Text>\n ) : (\n <>\n <Text style={{ color: theme.pageTextPositive }}>\n {mapField(field, options)}\n </Text>{' '}\n <Text>{friendlyOp(op, null)}</Text>{' '}\n <Value\n value={value}\n field={field}\n inline={true}\n valueIsRaw={op === 'contains' || op === 'doesNotContain'}\n />\n </>\n )}\n </div>\n </Button>\n <Button type=\"bare\" onClick={onDelete} aria-label=\"Delete filter\">\n <DeleteIcon\n style={{\n width: 8,\n height: 8,\n margin: 5,\n marginLeft: 3,\n }}\n />\n </Button>\n {editing && (\n <FilterEditor\n field={originalField}\n customName={customName}\n op={op}\n value={value}\n options={options}\n stage={stage}\n onSave={onChange}\n onClose={() => setEditing(false)}\n />\n )}\n </View>\n );\n}\n\nexport function AppliedFilters({\n filters,\n editingFilter,\n onUpdate,\n onDelete,\n conditionsOp,\n onCondOpChange,\n}) {\n return (\n <View\n style={{\n flexDirection: 'row',\n alignItems: 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n <CondOpMenu\n conditionsOp={conditionsOp}\n onCondOpChange={onCondOpChange}\n filters={filters}\n />\n {filters.map((filter, i) => (\n <FilterExpression\n key={i}\n customName={filter.customName}\n field={filter.field}\n op={filter.op}\n value={filter.value}\n options={filter.options}\n editing={editingFilter === filter}\n onChange={newFilter => onUpdate(filter, newFilter)}\n onDelete={() => onDelete(filter)}\n />\n ))}\n </View>\n );\n}\n","import React, { useState, useRef, useEffect } from 'react';\n\nimport { send, sendCatch } from 'loot-core/src/platform/client/fetch';\n\nimport ExpandArrow from '../../icons/v0/ExpandArrow';\nimport { theme } from '../../style';\nimport Button from '../common/Button';\nimport Menu from '../common/Menu';\nimport MenuTooltip from '../common/MenuTooltip';\nimport Stack from '../common/Stack';\nimport Text from '../common/Text';\nimport View from '../common/View';\nimport { FormField, FormLabel } from '../forms';\nimport { FieldSelect } from '../modals/EditRule';\nimport GenericInput from '../util/GenericInput';\n\nimport { AppliedFilters } from './FiltersMenu';\n\nfunction SavedFilterMenuButton({\n filters,\n conditionsOp,\n filterId,\n onClearFilters,\n onReloadSavedFilter,\n filtersList,\n}) {\n let [nameOpen, setNameOpen] = useState(false);\n let [adding, setAdding] = useState(false);\n let [menuOpen, setMenuOpen] = useState(false);\n let [err, setErr] = useState(null);\n let [menuItem, setMenuItem] = useState(null);\n let inputRef = useRef();\n let name = filterId.name;\n let id = filterId.id;\n let res;\n let savedFilter;\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus();\n }\n }, [NameFilter]);\n\n const onFilterMenuSelect = async item => {\n setMenuItem(item);\n switch (item) {\n case 'rename-filter':\n setErr(null);\n setAdding(false);\n setMenuOpen(false);\n setNameOpen(true);\n break;\n case 'delete-filter':\n setMenuOpen(false);\n await send('filter-delete', id);\n onClearFilters();\n break;\n case 'update-filter':\n setErr(null);\n setAdding(false);\n setMenuOpen(false);\n savedFilter = {\n conditions: filters,\n conditionsOp: conditionsOp,\n id: filterId.id,\n name: filterId.name,\n status: 'saved',\n };\n res = await sendCatch('filter-update', {\n state: savedFilter,\n filters: [...filtersList],\n });\n if (res.error) {\n setErr(res.error.message);\n setNameOpen(true);\n } else {\n onReloadSavedFilter(savedFilter, 'update');\n }\n break;\n case 'save-filter':\n setErr(null);\n setAdding(true);\n setMenuOpen(false);\n setNameOpen(true);\n break;\n case 'reload-filter':\n setMenuOpen(false);\n savedFilter = {\n status: 'saved',\n };\n onReloadSavedFilter(savedFilter, 'reload');\n break;\n case 'clear-filter':\n setMenuOpen(false);\n onClearFilters();\n break;\n default:\n }\n };\n\n function FilterMenu({ onClose, filterId }) {\n return (\n <MenuTooltip width={200} onClose={onClose}>\n <Menu\n onMenuSelect={item => {\n onFilterMenuSelect(item);\n }}\n items={[\n ...(!filterId.id\n ? [\n { name: 'save-filter', text: 'Save new filter' },\n { name: 'clear-filter', text: 'Clear all conditions' },\n ]\n : [\n ...(filterId.id !== null && filterId.status === 'saved'\n ? [\n { name: 'rename-filter', text: 'Rename' },\n { name: 'delete-filter', text: 'Delete' },\n Menu.line,\n {\n name: 'save-filter',\n text: 'Save new filter',\n disabled: true,\n },\n { name: 'clear-filter', text: 'Clear all conditions' },\n ]\n : [\n { name: 'rename-filter', text: 'Rename' },\n { name: 'update-filter', text: 'Update condtions' },\n { name: 'reload-filter', text: 'Revert changes' },\n { name: 'delete-filter', text: 'Delete' },\n Menu.line,\n { name: 'save-filter', text: 'Save new filter' },\n { name: 'clear-filter', text: 'Clear all conditions' },\n ]),\n ]),\n ]}\n />\n </MenuTooltip>\n );\n }\n\n async function onAddUpdate() {\n if (adding) {\n //create new flow\n savedFilter = {\n conditions: filters,\n conditionsOp: conditionsOp,\n name: name,\n status: 'saved',\n };\n res = await sendCatch('filter-create', {\n state: savedFilter,\n filters: [...filtersList],\n });\n savedFilter = {\n ...savedFilter,\n id: res.data,\n };\n } else {\n //rename flow\n savedFilter = {\n conditions: filterId.conditions,\n conditionsOp: filterId.conditionsOp,\n id: filterId.id,\n name: name,\n };\n res = await sendCatch('filter-update', {\n state: savedFilter,\n filters: [...filtersList],\n });\n }\n if (res.error) {\n setErr(res.error.message);\n } else {\n setNameOpen(false);\n onReloadSavedFilter(savedFilter);\n }\n }\n\n function NameFilter({ onClose }) {\n return (\n <MenuTooltip width={325} onClose={onClose}>\n {menuItem !== 'update-filter' && (\n <form>\n <Stack\n direction=\"row\"\n justify=\"flex-end\"\n align=\"center\"\n style={{ padding: 10 }}\n >\n <FormField style={{ flex: 1 }}>\n <FormLabel\n title=\"Filter Name\"\n htmlFor=\"name-field\"\n style={{ userSelect: 'none' }}\n />\n <GenericInput\n inputRef={inputRef}\n id=\"name-field\"\n field=\"string\"\n type=\"string\"\n value={name}\n onChange={e => (name = e)}\n />\n </FormField>\n <Button\n type=\"primary\"\n style={{ marginTop: 18 }}\n onClick={e => {\n e.preventDefault();\n onAddUpdate();\n }}\n >\n {adding ? 'Add' : 'Update'}\n </Button>\n </Stack>\n </form>\n )}\n {err && (\n <Stack direction=\"row\" align=\"center\" style={{ padding: 10 }}>\n <Text style={{ color: theme.errorText }}>{err}</Text>\n </Stack>\n )}\n </MenuTooltip>\n );\n }\n\n return (\n <View>\n {filters.length > 0 && (\n <Button\n type=\"bare\"\n style={{ marginTop: 10 }}\n onClick={() => {\n setMenuOpen(true);\n }}\n >\n <Text\n style={{\n maxWidth: 150,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n flexShrink: 0,\n }}\n >\n {!filterId.id ? 'Unsaved filter' : filterId.name} \n </Text>\n {filterId.id && filterId.status !== 'saved' && (\n <Text>(modified) </Text>\n )}\n <ExpandArrow width={8} height={8} style={{ marginRight: 5 }} />\n </Button>\n )}\n {menuOpen && (\n <FilterMenu onClose={() => setMenuOpen(false)} filterId={filterId} />\n )}\n {nameOpen && <NameFilter onClose={() => setNameOpen(false)} />}\n </View>\n );\n}\n\nexport function CondOpMenu({ conditionsOp, onCondOpChange, filters }) {\n return (\n filters.length > 1 && (\n <Text style={{ color: theme.pageText, marginTop: 11, marginRight: 5 }}>\n <FieldSelect\n style={{ display: 'inline-flex' }}\n fields={[\n ['and', 'all'],\n ['or', 'any'],\n ]}\n value={conditionsOp}\n onChange={(name, value) => onCondOpChange(value, filters)}\n />\n of:\n </Text>\n )\n );\n}\n\nexport function FiltersStack({\n filters,\n conditionsOp,\n onUpdateFilter,\n onDeleteFilter,\n onClearFilters,\n onReloadSavedFilter,\n filterId,\n filtersList,\n onCondOpChange,\n}) {\n return (\n <View>\n <Stack\n spacing={2}\n direction=\"row\"\n justify=\"flex-start\"\n align=\"flex-start\"\n >\n <AppliedFilters\n filters={filters}\n conditionsOp={conditionsOp}\n onCondOpChange={onCondOpChange}\n onUpdate={onUpdateFilter}\n onDelete={onDeleteFilter}\n />\n <View style={{ flex: 1 }} />\n <SavedFilterMenuButton\n filters={filters}\n conditionsOp={conditionsOp}\n filterId={filterId}\n onClearFilters={onClearFilters}\n onReloadSavedFilter={onReloadSavedFilter}\n filtersList={filtersList}\n />\n </Stack>\n </View>\n );\n}\n"],"names":["MenuTooltip","width","onClose","children","Tooltip","position","style","padding","SvgSettingsSliderAlternate","props","svg","xmlns","viewBox","color","path","fill","d","filterFields","map","field","mapField","subfieldFromFilter","options","value","length","inflow","outflow","subfieldToOptions","subfield","month","year","OpButton","op","selected","onClick","Button","type","backgroundColor","theme","altbuttonMenuBackground","marginBottom","buttonNormalSelectedText","buttonNormalSelectedBackground","friendlyOp","updateFilterReducer","state","action","FIELD_TYPES","get","makeValue","Error","ConfigureField","initialSubfield","dispatch","onApply","setSubfield","useState","inputRef","useRef","prevOp","useEffect","current","focus","ops","TYPE_INFO","filter","altmenuItemTextHeader","data-testid","FocusScope","View","Stack","direction","align","Select","bare","onChange","sub","borderWidth","titleFirst","flex","pageTextLight","spacing","flexWrap","slice","currOp","form","GenericInput","multi","marginTop","v","justify","e","preventDefault","FilterButton","filters","useFilters","dateFormat","useSelector","prefs","local","useReducer","fieldsOpen","condOpen","deserializeField","onValidateAndApply","cond","unparse","date","parseDate","getMonthYearFormat","Date","isDateValid","formatDate","alert","error","send","conditions","actions","saved","find","f","id","conditionErrors","getFieldError","SettingsSliderAlternate","height","marginRight","Menu","onMenuSelect","name","items","text","FilterEditor","onSave","FilterExpression","originalField","customName","stage","onDelete","editing","setEditing","pillBackground","borderRadius","flexDirection","alignItems","disabled","div","paddingBlock","paddingLeft","paddingRight","Text","pageTextPositive","Value","inline","valueIsRaw","aria-label","DeleteIcon","margin","marginLeft","AppliedFilters","editingFilter","onUpdate","conditionsOp","onCondOpChange","CondOpMenu","i","newFilter","SavedFilterMenuButton","filterId","onClearFilters","onReloadSavedFilter","filtersList","nameOpen","setNameOpen","adding","setAdding","menuOpen","setMenuOpen","err","setErr","menuItem","setMenuItem","res","savedFilter","NameFilter","onFilterMenuSelect","item","status","sendCatch","message","FilterMenu","line","onAddUpdate","data","FormField","FormLabel","title","htmlFor","userSelect","errorText","maxWidth","whiteSpace","overflow","textOverflow","flexShrink","ExpandArrow","pageText","FieldSelect","display","fields","FiltersStack","onUpdateFilter","onDeleteFilter"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self["webpackChunk_actual_app_web"]=self["webpackChunk_actual_app_web"]||[]).push([[473],{83473:function(l,Z,d){d.r(Z);function G(l,Z){var d=atob(l);if(Z){var G=new Uint8Array(d.length);for(var m=0,b=d.length;m<b;++m){G[m]=d.charCodeAt(m)}return String.fromCharCode.apply(null,new Uint16Array(G.buffer))}return d}function m(l,Z,d){var m=Z===undefined?null:Z;var b=d===undefined?false:d;var c=G(l,b);var X=c.indexOf("\n",10)+1;var p=c.substring(X)+(m?"//# sourceMappingURL="+m:"");var a=new Blob([p],{type:"application/javascript"});return URL.createObjectURL(a)}function b(l,Z,d){var G;return function b(b){G=G||m(l,Z,d);return new Worker(G,b)}}var c=b("Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IHQ9MzczNTkyODU1OTtjbGFzcyBle2NvbnN0cnVjdG9yKHQse2luaXRpYWxPZmZzZXQ6ZT00LHVzZUF0b21pY3M6aT0hMCxzdHJlYW06cz0hMCxkZWJ1ZzpyLG5hbWU6bn09e30pe3RoaXMuYnVmZmVyPXQsdGhpcy5hdG9taWNWaWV3PW5ldyBJbnQzMkFycmF5KHQpLHRoaXMub2Zmc2V0PWUsdGhpcy51c2VBdG9taWNzPWksdGhpcy5zdHJlYW09cyx0aGlzLmRlYnVnPXIsdGhpcy5uYW1lPW59bG9nKC4uLnQpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nKGBbcmVhZGVyOiAke3RoaXMubmFtZX1dYCwuLi50KX13YWl0V3JpdGUodCxlPW51bGwpe2lmKHRoaXMudXNlQXRvbWljcyl7Zm9yKHRoaXMubG9nKGB3YWl0aW5nIGZvciAke3R9YCk7MD09PUF0b21pY3MubG9hZCh0aGlzLmF0b21pY1ZpZXcsMCk7KXtpZihudWxsIT1lJiYidGltZWQtb3V0Ij09PUF0b21pY3Mud2FpdCh0aGlzLmF0b21pY1ZpZXcsMCwwLGUpKXRocm93IG5ldyBFcnJvcigidGltZW91dCIpO0F0b21pY3Mud2FpdCh0aGlzLmF0b21pY1ZpZXcsMCwwLDUwMCl9dGhpcy5sb2coYHJlc3VtZWQgZm9yICR7dH1gKX1lbHNlIGlmKDEhPT10aGlzLmF0b21pY1ZpZXdbMF0pdGhyb3cgbmV3IEVycm9yKCJgd2FpdFdyaXRlYCBleHBlY3RlZCBhcnJheSB0byBiZSByZWFkYWJsZSIpfWZsaXAoKXtpZih0aGlzLmxvZygiZmxpcCIpLHRoaXMudXNlQXRvbWljcyl7aWYoMSE9PUF0b21pY3MuY29tcGFyZUV4Y2hhbmdlKHRoaXMuYXRvbWljVmlldywwLDEsMCkpdGhyb3cgbmV3IEVycm9yKCJSZWFkIGRhdGEgb3V0IG9mIHN5bmMhIFRoaXMgaXMgZGlzYXN0cm91cyIpO0F0b21pY3Mubm90aWZ5KHRoaXMuYXRvbWljVmlldywwKX1lbHNlIHRoaXMuYXRvbWljVmlld1swXT0wO3RoaXMub2Zmc2V0PTR9ZG9uZSgpe3RoaXMud2FpdFdyaXRlKCJkb25lIik7bGV0IGU9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5nZXRVaW50MzIoMCk9PT10O3JldHVybiBlJiYodGhpcy5sb2coImRvbmUiKSx0aGlzLmZsaXAoKSksZX1wZWVrKHQpe3RoaXMucGVla09mZnNldD10aGlzLm9mZnNldDtsZXQgZT10KCk7cmV0dXJuIHRoaXMub2Zmc2V0PXRoaXMucGVla09mZnNldCx0aGlzLnBlZWtPZmZzZXQ9bnVsbCxlfXN0cmluZyh0KXt0aGlzLndhaXRXcml0ZSgic3RyaW5nIix0KTtsZXQgZT10aGlzLl9pbnQzMigpLGk9ZS8yLHM9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0LGUpLHI9W107Zm9yKGxldCB0PTA7dDxpO3QrKylyLnB1c2gocy5nZXRVaW50MTYoMip0KSk7bGV0IG49U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHIpO3JldHVybiB0aGlzLmxvZygic3RyaW5nIixuKSx0aGlzLm9mZnNldCs9ZSxudWxsPT10aGlzLnBlZWtPZmZzZXQmJnRoaXMuZmxpcCgpLG59X2ludDMyKCl7bGV0IHQ9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5nZXRJbnQzMigpO3JldHVybiB0aGlzLmxvZygiX2ludDMyIix0KSx0aGlzLm9mZnNldCs9NCx0fWludDMyKCl7dGhpcy53YWl0V3JpdGUoImludDMyIik7bGV0IHQ9dGhpcy5faW50MzIoKTtyZXR1cm4gdGhpcy5sb2coImludDMyIix0KSxudWxsPT10aGlzLnBlZWtPZmZzZXQmJnRoaXMuZmxpcCgpLHR9Ynl0ZXMoKXt0aGlzLndhaXRXcml0ZSgiYnl0ZXMiKTtsZXQgdD10aGlzLl9pbnQzMigpLGU9bmV3IEFycmF5QnVmZmVyKHQpO3JldHVybiBuZXcgVWludDhBcnJheShlKS5zZXQobmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIsdGhpcy5vZmZzZXQsdCkpLHRoaXMubG9nKCJieXRlcyIsZSksdGhpcy5vZmZzZXQrPXQsbnVsbD09dGhpcy5wZWVrT2Zmc2V0JiZ0aGlzLmZsaXAoKSxlfX1jbGFzcyBpe2NvbnN0cnVjdG9yKHQse2luaXRpYWxPZmZzZXQ6ZT00LHVzZUF0b21pY3M6aT0hMCxzdHJlYW06cz0hMCxkZWJ1ZzpyLG5hbWU6bn09e30pe3RoaXMuYnVmZmVyPXQsdGhpcy5hdG9taWNWaWV3PW5ldyBJbnQzMkFycmF5KHQpLHRoaXMub2Zmc2V0PWUsdGhpcy51c2VBdG9taWNzPWksdGhpcy5zdHJlYW09cyx0aGlzLmRlYnVnPXIsdGhpcy5uYW1lPW4sdGhpcy51c2VBdG9taWNzP0F0b21pY3Muc3RvcmUodGhpcy5hdG9taWNWaWV3LDAsMCk6dGhpcy5hdG9taWNWaWV3WzBdPTB9bG9nKC4uLnQpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nKGBbd3JpdGVyOiAke3RoaXMubmFtZX1dYCwuLi50KX13YWl0UmVhZCh0KXtpZih0aGlzLnVzZUF0b21pY3Mpe2lmKHRoaXMubG9nKGB3YWl0aW5nIGZvciAke3R9YCksMCE9PUF0b21pY3MuY29tcGFyZUV4Y2hhbmdlKHRoaXMuYXRvbWljVmlldywwLDAsMSkpdGhyb3cgbmV3IEVycm9yKCJXcm90ZSBzb21ldGhpbmcgaW50byB1bndyaXRhYmxlIGJ1ZmZlciEgVGhpcyBpcyBkaXNhc3Ryb3VzIik7Zm9yKEF0b21pY3Mubm90aWZ5KHRoaXMuYXRvbWljVmlldywwKTsxPT09QXRvbWljcy5sb2FkKHRoaXMuYXRvbWljVmlldywwKTspQXRvbWljcy53YWl0KHRoaXMuYXRvbWljVmlldywwLDEsNTAwKTt0aGlzLmxvZyhgcmVzdW1lZCBmb3IgJHt0fWApfWVsc2UgdGhpcy5hdG9taWNWaWV3WzBdPTE7dGhpcy5vZmZzZXQ9NH1maW5hbGl6ZSgpe3RoaXMubG9nKCJmaW5hbGl6aW5nIiksbmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5zZXRVaW50MzIoMCx0KSx0aGlzLndhaXRSZWFkKCJmaW5hbGl6ZSIpfXN0cmluZyh0KXt0aGlzLmxvZygic3RyaW5nIix0KTtsZXQgZT0yKnQubGVuZ3RoO3RoaXMuX2ludDMyKGUpO2xldCBpPW5ldyBEYXRhVmlldyh0aGlzLmJ1ZmZlcix0aGlzLm9mZnNldCxlKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpLnNldFVpbnQxNigyKmUsdC5jaGFyQ29kZUF0KGUpKTt0aGlzLm9mZnNldCs9ZSx0aGlzLndhaXRSZWFkKCJzdHJpbmciKX1faW50MzIodCl7bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5zZXRJbnQzMigwLHQpLHRoaXMub2Zmc2V0Kz00fWludDMyKHQpe3RoaXMubG9nKCJpbnQzMiIsdCksdGhpcy5faW50MzIodCksdGhpcy53YWl0UmVhZCgiaW50MzIiKX1ieXRlcyh0KXt0aGlzLmxvZygiYnl0ZXMiLHQpO2xldCBlPXQuYnl0ZUxlbmd0aDt0aGlzLl9pbnQzMihlKSxuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcix0aGlzLm9mZnNldCkuc2V0KG5ldyBVaW50OEFycmF5KHQpKSx0aGlzLm9mZnNldCs9ZSx0aGlzLndhaXRSZWFkKCJieXRlcyIpfX1sZXQgcz0wLHI9MSxuPTIsbz00O2xldCBhPS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbD1uZXcgTWFwLGM9bmV3IE1hcDtmdW5jdGlvbiBoKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGUpfWNsYXNzIGZ7Y29uc3RydWN0b3IodCxlPSJyZWFkb25seSIpe3RoaXMuZGI9dCx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sZSksdGhpcy5zdG9yZT10aGlzLnRyYW5zLm9iamVjdFN0b3JlKCJkYXRhIiksdGhpcy5sb2NrVHlwZT0icmVhZG9ubHkiPT09ZT9yOm8sdGhpcy5jYWNoZWRGaXJzdEJsb2NrPW51bGwsdGhpcy5jdXJzb3I9bnVsbCx0aGlzLnByZXZSZWFkcz1udWxsfWFzeW5jIHByZWZldGNoRmlyc3RCbG9jayh0KXtsZXQgZT1hd2FpdCB0aGlzLmdldCgwKTtyZXR1cm4gdGhpcy5jYWNoZWRGaXJzdEJsb2NrPWUsZX1hc3luYyB3YWl0Q29tcGxldGUoKXtyZXR1cm4gbmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5jb21taXQoKSx0aGlzLmxvY2tUeXBlPT09bz8odGhpcy50cmFucy5vbmNvbXBsZXRlPWU9PnQoKSx0aGlzLnRyYW5zLm9uZXJyb3I9dD0+ZSh0KSk6YT90aGlzLnRyYW5zLm9uY29tcGxldGU9ZT0+dCgpOnQoKX0pKX1jb21taXQoKXt0aGlzLnRyYW5zLmNvbW1pdCYmdGhpcy50cmFucy5jb21taXQoKX1hc3luYyB1cGdyYWRlRXhjbHVzaXZlKCl7dGhpcy5jb21taXQoKSx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sInJlYWR3cml0ZSIpLHRoaXMuc3RvcmU9dGhpcy50cmFucy5vYmplY3RTdG9yZSgiZGF0YSIpLHRoaXMubG9ja1R5cGU9bztsZXQgdD10aGlzLmNhY2hlZEZpcnN0QmxvY2s7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9dCYmbnVsbCE9ZSl7bGV0IGk9bmV3IFVpbnQ4QXJyYXkodCkscz1uZXcgVWludDhBcnJheShlKTtmb3IobGV0IHQ9MjQ7dDw0MDt0KyspaWYoaVt0XSE9PXNbdF0pcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIG51bGw9PXQmJm51bGw9PWV9KGF3YWl0IHRoaXMucHJlZmV0Y2hGaXJzdEJsb2NrKDUwMCksdCl9ZG93bmdyYWRlU2hhcmVkKCl7dGhpcy5jb21taXQoKSx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sInJlYWRvbmx5IiksdGhpcy5zdG9yZT10aGlzLnRyYW5zLm9iamVjdFN0b3JlKCJkYXRhIiksdGhpcy5sb2NrVHlwZT1yfWFzeW5jIGdldCh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLGkpPT57bGV0IHM9dGhpcy5zdG9yZS5nZXQodCk7cy5vbnN1Y2Nlc3M9dD0+e2Uocy5yZXN1bHQpfSxzLm9uZXJyb3I9dD0+aSh0KX0pKX1nZXRSZWFkRGlyZWN0aW9uKCl7bGV0IHQ9dGhpcy5wcmV2UmVhZHM7aWYodCl7aWYodFswXTx0WzFdJiZ0WzFdPHRbMl0mJnRbMl0tdFswXTwxMClyZXR1cm4ibmV4dCI7aWYodFswXT50WzFdJiZ0WzFdPnRbMl0mJnRbMF0tdFsyXTwxMClyZXR1cm4icHJldiJ9cmV0dXJuIG51bGx9cmVhZCh0KXtsZXQgZT0oKT0+bmV3IFByb21pc2UoKCh0LGUpPT57aWYobnVsbCE9dGhpcy5jdXJzb3JQcm9taXNlKXRocm93IG5ldyBFcnJvcigid2FpdEN1cnNvcigpIGNhbGxlZCBidXQgc29tZXRoaW5nIGVsc2UgaXMgYWxyZWFkeSB3YWl0aW5nIik7dGhpcy5jdXJzb3JQcm9taXNlPXtyZXNvbHZlOnQscmVqZWN0OmV9fSkpO2lmKHRoaXMuY3Vyc29yKXtsZXQgaT10aGlzLmN1cnNvcjtyZXR1cm4ibmV4dCI9PT1pLmRpcmVjdGlvbiYmdD5pLmtleSYmdDxpLmtleSsxMDA/KGkuYWR2YW5jZSh0LWkua2V5KSxlKCkpOiJwcmV2Ij09PWkuZGlyZWN0aW9uJiZ0PGkua2V5JiZ0Pmkua2V5LTEwMD8oaS5hZHZhbmNlKGkua2V5LXQpLGUoKSk6KHRoaXMuY3Vyc29yPW51bGwsdGhpcy5yZWFkKHQpKX17bGV0IGk9dGhpcy5nZXRSZWFkRGlyZWN0aW9uKCk7aWYoaSl7bGV0IHM7dGhpcy5wcmV2UmVhZHM9bnVsbCxzPSJwcmV2Ij09PWk/SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0KTpJREJLZXlSYW5nZS5sb3dlckJvdW5kKHQpO2xldCByPXRoaXMuc3RvcmUub3BlbkN1cnNvcihzLGkpO3JldHVybiByLm9uc3VjY2Vzcz10PT57bGV0IGU9dC50YXJnZXQucmVzdWx0O2lmKHRoaXMuY3Vyc29yPWUsbnVsbD09dGhpcy5jdXJzb3JQcm9taXNlKXRocm93IG5ldyBFcnJvcigiR290IGRhdGEgZnJvbSBjdXJzb3IgYnV0IG5vdGhpbmcgaXMgd2FpdGluZyBpdCIpO3RoaXMuY3Vyc29yUHJvbWlzZS5yZXNvbHZlKGU/ZS52YWx1ZTpudWxsKSx0aGlzLmN1cnNvclByb21pc2U9bnVsbH0sci5vbmVycm9yPXQ9PntpZihjb25zb2xlLmxvZygiQ3Vyc29yIGZhaWx1cmU6Iix0KSxudWxsPT10aGlzLmN1cnNvclByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJHb3QgZGF0YSBmcm9tIGN1cnNvciBidXQgbm90aGluZyBpcyB3YWl0aW5nIGl0Iik7dGhpcy5jdXJzb3JQcm9taXNlLnJlamVjdCh0KSx0aGlzLmN1cnNvclByb21pc2U9bnVsbH0sZSgpfXJldHVybiBudWxsPT10aGlzLnByZXZSZWFkcyYmKHRoaXMucHJldlJlYWRzPVswLDAsMF0pLHRoaXMucHJldlJlYWRzLnB1c2godCksdGhpcy5wcmV2UmVhZHMuc2hpZnQoKSx0aGlzLmdldCh0KX19YXN5bmMgc2V0KHQpe3JldHVybiB0aGlzLnByZXZSZWFkcz1udWxsLG5ldyBQcm9taXNlKCgoZSxpKT0+e2xldCBzPXRoaXMuc3RvcmUucHV0KHQudmFsdWUsdC5rZXkpO3Mub25zdWNjZXNzPXQ9PmUocy5yZXN1bHQpLHMub25lcnJvcj10PT5pKHQpfSkpfWFzeW5jIGJ1bGtTZXQodCl7dGhpcy5wcmV2UmVhZHM9bnVsbDtmb3IobGV0IGUgb2YgdCl0aGlzLnN0b3JlLnB1dChlLnZhbHVlLGUua2V5KX19YXN5bmMgZnVuY3Rpb24gdSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLGkpPT57aWYobC5nZXQodCkpcmV0dXJuIHZvaWQgZShsLmdldCh0KSk7bGV0IHM9Z2xvYmFsVGhpcy5pbmRleGVkREIub3Blbih0LDIpO3Mub25zdWNjZXNzPWk9PntsZXQgcz1pLnRhcmdldC5yZXN1bHQ7cy5vbnZlcnNpb25jaGFuZ2U9KCk9Pntjb25zb2xlLmxvZygiY2xvc2luZyBiZWNhdXNlIHZlcnNpb24gY2hhbmdlZCIpLHMuY2xvc2UoKSxsLmRlbGV0ZSh0KX0scy5vbmNsb3NlPSgpPT57bC5kZWxldGUodCl9LGwuc2V0KHQscyksZShzKX0scy5vbnVwZ3JhZGVuZWVkZWQ9dD0+e2xldCBlPXQudGFyZ2V0LnJlc3VsdDtlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoImRhdGEiKXx8ZS5jcmVhdGVPYmplY3RTdG9yZSgiZGF0YSIpfSxzLm9uYmxvY2tlZD10PT5jb25zb2xlLmxvZygiYmxvY2tlZCIsdCkscy5vbmVycm9yPXMub25hYm9ydD10PT5pKHQudGFyZ2V0LmVycm9yKX0pKX1hc3luYyBmdW5jdGlvbiB3KHQsZSxpKXtsZXQgcz1jLmdldCh0KTtpZihzKXtpZigicmVhZHdyaXRlIj09PWUmJnMubG9ja1R5cGU9PT1yKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGVkIHdyaXRlIGJ1dCBvbmx5IGhhcyBTSEFSRUQgbG9jayIpO3JldHVybiBpKHMpfXM9bmV3IGYoYXdhaXQgdSh0KSxlKSxhd2FpdCBpKHMpLGF3YWl0IHMud2FpdENvbXBsZXRlKCl9YXN5bmMgZnVuY3Rpb24gZCh0LGUsaSl7bGV0IG49ZnVuY3Rpb24odCl7cmV0dXJuIGMuZ2V0KHQpfShlKTtpZihpPT09cil7aWYobnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIlVubG9jayBlcnJvciAoU0hBUkVEKTogbm8gdHJhbnNhY3Rpb24gcnVubmluZyIpO24ubG9ja1R5cGU9PT1vJiZuLmRvd25ncmFkZVNoYXJlZCgpfWVsc2UgaT09PXMmJm4mJihhd2FpdCBuLndhaXRDb21wbGV0ZSgpLGMuZGVsZXRlKGUpKTt0LmludDMyKDApLHQuZmluYWxpemUoKX1hc3luYyBmdW5jdGlvbiBnKHQsZSl7bGV0IGk9dC5zdHJpbmcoKTtzd2l0Y2goaSl7Y2FzZSJwcm9maWxlLXN0YXJ0Ijp0LmRvbmUoKSxlLmludDMyKDApLGUuZmluYWxpemUoKSxnKHQsZSk7YnJlYWs7Y2FzZSJwcm9maWxlLXN0b3AiOnQuZG9uZSgpLGF3YWl0IG5ldyBQcm9taXNlKCh0PT5zZXRUaW1lb3V0KHQsMWUzKSkpLGUuaW50MzIoMCksZS5maW5hbGl6ZSgpLGcodCxlKTticmVhaztjYXNlIndyaXRlQmxvY2tzIjp7bGV0IGk9dC5zdHJpbmcoKSxzPVtdO2Zvcig7IXQuZG9uZSgpOyl7bGV0IGU9dC5pbnQzMigpLGk9dC5ieXRlcygpO3MucHVzaCh7cG9zOmUsZGF0YTppfSl9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLGkpe3JldHVybiB3KGUsInJlYWR3cml0ZSIsKGFzeW5jIGU9Pnthd2FpdCBlLmJ1bGtTZXQoaS5tYXAoKHQ9Pih7a2V5OnQucG9zLHZhbHVlOnQuZGF0YX0pKSkpLHQuaW50MzIoMCksdC5maW5hbGl6ZSgpfSkpfShlLGkscyksZyh0LGUpO2JyZWFrfWNhc2UicmVhZEJsb2NrIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHcoZSwicmVhZG9ubHkiLChhc3luYyBlPT57bGV0IHM9YXdhaXQgZS5yZWFkKGkpO251bGw9PXM/dC5ieXRlcyhuZXcgQXJyYXlCdWZmZXIoMCkpOnQuYnl0ZXMocyksdC5maW5hbGl6ZSgpfSkpfShlLGkscyksZyh0LGUpO2JyZWFrfWNhc2UicmVhZE1ldGEiOntsZXQgaT10LnN0cmluZygpO3QuZG9uZSgpLGF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHcoZSwicmVhZG9ubHkiLChhc3luYyBpPT57dHJ5e2NvbnNvbGUubG9nKCJSZWFkaW5nIG1ldGEuLi4iKTtsZXQgcz1hd2FpdCBpLmdldCgtMSk7aWYoY29uc29sZS5sb2coYEdvdCBtZXRhIGZvciAke2V9OmAscyksbnVsbD09cyl0LmludDMyKC0xKSx0LmludDMyKDQwOTYpLHQuZmluYWxpemUoKTtlbHNle2xldCBlPWF3YWl0IGkuZ2V0KDApLHI9NDA5NjtlJiYocj0yNTYqbmV3IFVpbnQxNkFycmF5KGUpWzhdKSx0LmludDMyKHMuc2l6ZSksdC5pbnQzMihyKSx0LmZpbmFsaXplKCl9fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpLHQuaW50MzIoLTEpLHQuaW50MzIoLTEpLHQuZmluYWxpemUoKX19KSl9KGUsaSksZyh0LGUpO2JyZWFrfWNhc2Uid3JpdGVNZXRhIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHcoZSwicmVhZHdyaXRlIiwoYXN5bmMgZT0+e3RyeXthd2FpdCBlLnNldCh7a2V5Oi0xLHZhbHVlOml9KSx0LmludDMyKDApLHQuZmluYWxpemUoKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKSx0LmludDMyKC0xKSx0LmZpbmFsaXplKCl9fSkpfShlLGkse3NpemU6c30pLGcodCxlKTticmVha31jYXNlImNsb3NlRmlsZSI6e2xldCBpPXQuc3RyaW5nKCk7dC5kb25lKCksZS5pbnQzMigwKSxlLmZpbmFsaXplKCksZnVuY3Rpb24odCl7bGV0IGU9bC5nZXQodCk7ZSYmKGUuY2xvc2UoKSxsLmRlbGV0ZSh0KSl9KGkpLHNlbGYuY2xvc2UoKTticmVha31jYXNlImxvY2tGaWxlIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7bGV0IHM9Yy5nZXQoZSk7aWYocylpZihpPnMubG9ja1R5cGUpe2gocy5sb2NrVHlwZT09PXIsYFVwcmFkaW5nIGxvY2sgdHlwZSBmcm9tICR7cy5sb2NrVHlwZX0gaXMgaW52YWxpZGApLGgoaT09PW58fGk9PT1vLGBVcGdyYWRpbmcgbG9jayB0eXBlIHRvICR7aX0gaXMgaW52YWxpZGApO2xldCBlPWF3YWl0IHMudXBncmFkZUV4Y2x1c2l2ZSgpO3QuaW50MzIoZT8wOi0xKSx0LmZpbmFsaXplKCl9ZWxzZSBoKHMubG9ja1R5cGU9PT1pLGBEb3duZ3JhZGluZyBsb2NrIHRvICR7aX0gaXMgaW52YWxpZGApLHQuaW50MzIoMCksdC5maW5hbGl6ZSgpO2Vsc2V7aChpPT09cixgTmV3IGxvY2tzIG11c3Qgc3RhcnQgYXMgU0hBUkVEIGluc3RlYWQgb2YgJHtpfWApO2xldCBzPW5ldyBmKGF3YWl0IHUoZSkpO2F3YWl0IHMucHJlZmV0Y2hGaXJzdEJsb2NrKDUwMCksYy5zZXQoZSxzKSx0LmludDMyKDApLHQuZmluYWxpemUoKX19KGUsaSxzKSxnKHQsZSk7YnJlYWt9Y2FzZSJ1bmxvY2tGaWxlIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBkKGUsaSxzKSxnKHQsZSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWV0aG9kOiAiK2kpfX1zZWxmLm9ubWVzc2FnZT10PT57c3dpdGNoKHQuZGF0YS50eXBlKXtjYXNlImluaXQiOntsZXRbcyxyXT10LmRhdGEuYnVmZmVycztnKG5ldyBlKHMse25hbWU6ImFyZ3MiLGRlYnVnOiExfSksbmV3IGkocix7bmFtZToicmVzdWx0cyIsZGVidWc6ITF9KSk7YnJlYWt9fX19KCk7Cgo=",null,false);Z["default"]=c}}]);
|
|
2
|
+
//# sourceMappingURL=473.02c273e8.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static/js/473.02c273e8.chunk.js","mappings":"qIAAA,SAASA,EAAaC,CAAM,CAAEC,CAAa,EACvC,IAAIC,EAAeC,KAAKH,GACxB,GAAIC,EAAe,CACf,IAAIG,EAAa,IAAIC,WAAWH,EAAaI,MAAM,EACnD,IAAK,IAAIC,EAAI,EAAGC,EAAIN,EAAaI,MAAM,CAAEC,EAAIC,EAAG,EAAED,EAAG,CACjDH,CAAU,CAACG,EAAE,CAAGL,EAAaO,UAAU,CAACF,EAC5C,CACA,OAAOG,OAAOC,YAAY,CAACC,KAAK,CAAC,KAAM,IAAIC,YAAYT,EAAWU,MAAM,EAC5E,CACA,OAAOZ,CACX,CAEA,SAASa,EAAUf,CAAM,CAAEgB,CAAY,CAAEC,CAAgB,EACrD,IAAIC,EAAYF,IAAiBG,UAAY,KAAOH,EACpD,IAAIf,EAAgBgB,IAAqBE,UAAY,MAAQF,EAC7D,IAAIG,EAASrB,EAAaC,EAAQC,GAClC,IAAIoB,EAAQD,EAAOE,OAAO,CAAC,KAAM,IAAM,EACvC,IAAIC,EAAOH,EAAOI,SAAS,CAACH,GAAS,CAACH,EAAY,wBAA4BA,EAAY,EAAE,EAC5F,IAAIO,EAAO,IAAIC,KAAK,CAACH,EAAK,CAAE,CAAEI,KAAM,wBAAyB,GAC7D,OAAOC,IAAIC,eAAe,CAACJ,EAC/B,CAEA,SAASK,EAA0B9B,CAAM,CAAEgB,CAAY,CAAEC,CAAgB,EACrE,IAAIc,EACJ,OAAO,SAASC,EAAcC,CAAO,EACjCF,EAAMA,GAAOhB,EAAUf,EAAQgB,EAAcC,GAC7C,OAAO,IAAIiB,OAAOH,EAAKE,EAC3B,CACJ,CAEA,IAAID,EAAgBF,EAA0B,uxYAAwxY,KAAM,MAG50Y,cAAeE,C","sources":["../../../node_modules/absurd-sql/dist/indexeddb-main-thread-worker-e59fee74.js"],"sourcesContent":["function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IHQ9MzczNTkyODU1OTtjbGFzcyBle2NvbnN0cnVjdG9yKHQse2luaXRpYWxPZmZzZXQ6ZT00LHVzZUF0b21pY3M6aT0hMCxzdHJlYW06cz0hMCxkZWJ1ZzpyLG5hbWU6bn09e30pe3RoaXMuYnVmZmVyPXQsdGhpcy5hdG9taWNWaWV3PW5ldyBJbnQzMkFycmF5KHQpLHRoaXMub2Zmc2V0PWUsdGhpcy51c2VBdG9taWNzPWksdGhpcy5zdHJlYW09cyx0aGlzLmRlYnVnPXIsdGhpcy5uYW1lPW59bG9nKC4uLnQpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nKGBbcmVhZGVyOiAke3RoaXMubmFtZX1dYCwuLi50KX13YWl0V3JpdGUodCxlPW51bGwpe2lmKHRoaXMudXNlQXRvbWljcyl7Zm9yKHRoaXMubG9nKGB3YWl0aW5nIGZvciAke3R9YCk7MD09PUF0b21pY3MubG9hZCh0aGlzLmF0b21pY1ZpZXcsMCk7KXtpZihudWxsIT1lJiYidGltZWQtb3V0Ij09PUF0b21pY3Mud2FpdCh0aGlzLmF0b21pY1ZpZXcsMCwwLGUpKXRocm93IG5ldyBFcnJvcigidGltZW91dCIpO0F0b21pY3Mud2FpdCh0aGlzLmF0b21pY1ZpZXcsMCwwLDUwMCl9dGhpcy5sb2coYHJlc3VtZWQgZm9yICR7dH1gKX1lbHNlIGlmKDEhPT10aGlzLmF0b21pY1ZpZXdbMF0pdGhyb3cgbmV3IEVycm9yKCJgd2FpdFdyaXRlYCBleHBlY3RlZCBhcnJheSB0byBiZSByZWFkYWJsZSIpfWZsaXAoKXtpZih0aGlzLmxvZygiZmxpcCIpLHRoaXMudXNlQXRvbWljcyl7aWYoMSE9PUF0b21pY3MuY29tcGFyZUV4Y2hhbmdlKHRoaXMuYXRvbWljVmlldywwLDEsMCkpdGhyb3cgbmV3IEVycm9yKCJSZWFkIGRhdGEgb3V0IG9mIHN5bmMhIFRoaXMgaXMgZGlzYXN0cm91cyIpO0F0b21pY3Mubm90aWZ5KHRoaXMuYXRvbWljVmlldywwKX1lbHNlIHRoaXMuYXRvbWljVmlld1swXT0wO3RoaXMub2Zmc2V0PTR9ZG9uZSgpe3RoaXMud2FpdFdyaXRlKCJkb25lIik7bGV0IGU9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5nZXRVaW50MzIoMCk9PT10O3JldHVybiBlJiYodGhpcy5sb2coImRvbmUiKSx0aGlzLmZsaXAoKSksZX1wZWVrKHQpe3RoaXMucGVla09mZnNldD10aGlzLm9mZnNldDtsZXQgZT10KCk7cmV0dXJuIHRoaXMub2Zmc2V0PXRoaXMucGVla09mZnNldCx0aGlzLnBlZWtPZmZzZXQ9bnVsbCxlfXN0cmluZyh0KXt0aGlzLndhaXRXcml0ZSgic3RyaW5nIix0KTtsZXQgZT10aGlzLl9pbnQzMigpLGk9ZS8yLHM9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0LGUpLHI9W107Zm9yKGxldCB0PTA7dDxpO3QrKylyLnB1c2gocy5nZXRVaW50MTYoMip0KSk7bGV0IG49U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHIpO3JldHVybiB0aGlzLmxvZygic3RyaW5nIixuKSx0aGlzLm9mZnNldCs9ZSxudWxsPT10aGlzLnBlZWtPZmZzZXQmJnRoaXMuZmxpcCgpLG59X2ludDMyKCl7bGV0IHQ9bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5nZXRJbnQzMigpO3JldHVybiB0aGlzLmxvZygiX2ludDMyIix0KSx0aGlzLm9mZnNldCs9NCx0fWludDMyKCl7dGhpcy53YWl0V3JpdGUoImludDMyIik7bGV0IHQ9dGhpcy5faW50MzIoKTtyZXR1cm4gdGhpcy5sb2coImludDMyIix0KSxudWxsPT10aGlzLnBlZWtPZmZzZXQmJnRoaXMuZmxpcCgpLHR9Ynl0ZXMoKXt0aGlzLndhaXRXcml0ZSgiYnl0ZXMiKTtsZXQgdD10aGlzLl9pbnQzMigpLGU9bmV3IEFycmF5QnVmZmVyKHQpO3JldHVybiBuZXcgVWludDhBcnJheShlKS5zZXQobmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIsdGhpcy5vZmZzZXQsdCkpLHRoaXMubG9nKCJieXRlcyIsZSksdGhpcy5vZmZzZXQrPXQsbnVsbD09dGhpcy5wZWVrT2Zmc2V0JiZ0aGlzLmZsaXAoKSxlfX1jbGFzcyBpe2NvbnN0cnVjdG9yKHQse2luaXRpYWxPZmZzZXQ6ZT00LHVzZUF0b21pY3M6aT0hMCxzdHJlYW06cz0hMCxkZWJ1ZzpyLG5hbWU6bn09e30pe3RoaXMuYnVmZmVyPXQsdGhpcy5hdG9taWNWaWV3PW5ldyBJbnQzMkFycmF5KHQpLHRoaXMub2Zmc2V0PWUsdGhpcy51c2VBdG9taWNzPWksdGhpcy5zdHJlYW09cyx0aGlzLmRlYnVnPXIsdGhpcy5uYW1lPW4sdGhpcy51c2VBdG9taWNzP0F0b21pY3Muc3RvcmUodGhpcy5hdG9taWNWaWV3LDAsMCk6dGhpcy5hdG9taWNWaWV3WzBdPTB9bG9nKC4uLnQpe3RoaXMuZGVidWcmJmNvbnNvbGUubG9nKGBbd3JpdGVyOiAke3RoaXMubmFtZX1dYCwuLi50KX13YWl0UmVhZCh0KXtpZih0aGlzLnVzZUF0b21pY3Mpe2lmKHRoaXMubG9nKGB3YWl0aW5nIGZvciAke3R9YCksMCE9PUF0b21pY3MuY29tcGFyZUV4Y2hhbmdlKHRoaXMuYXRvbWljVmlldywwLDAsMSkpdGhyb3cgbmV3IEVycm9yKCJXcm90ZSBzb21ldGhpbmcgaW50byB1bndyaXRhYmxlIGJ1ZmZlciEgVGhpcyBpcyBkaXNhc3Ryb3VzIik7Zm9yKEF0b21pY3Mubm90aWZ5KHRoaXMuYXRvbWljVmlldywwKTsxPT09QXRvbWljcy5sb2FkKHRoaXMuYXRvbWljVmlldywwKTspQXRvbWljcy53YWl0KHRoaXMuYXRvbWljVmlldywwLDEsNTAwKTt0aGlzLmxvZyhgcmVzdW1lZCBmb3IgJHt0fWApfWVsc2UgdGhpcy5hdG9taWNWaWV3WzBdPTE7dGhpcy5vZmZzZXQ9NH1maW5hbGl6ZSgpe3RoaXMubG9nKCJmaW5hbGl6aW5nIiksbmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5zZXRVaW50MzIoMCx0KSx0aGlzLndhaXRSZWFkKCJmaW5hbGl6ZSIpfXN0cmluZyh0KXt0aGlzLmxvZygic3RyaW5nIix0KTtsZXQgZT0yKnQubGVuZ3RoO3RoaXMuX2ludDMyKGUpO2xldCBpPW5ldyBEYXRhVmlldyh0aGlzLmJ1ZmZlcix0aGlzLm9mZnNldCxlKTtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylpLnNldFVpbnQxNigyKmUsdC5jaGFyQ29kZUF0KGUpKTt0aGlzLm9mZnNldCs9ZSx0aGlzLndhaXRSZWFkKCJzdHJpbmciKX1faW50MzIodCl7bmV3IERhdGFWaWV3KHRoaXMuYnVmZmVyLHRoaXMub2Zmc2V0KS5zZXRJbnQzMigwLHQpLHRoaXMub2Zmc2V0Kz00fWludDMyKHQpe3RoaXMubG9nKCJpbnQzMiIsdCksdGhpcy5faW50MzIodCksdGhpcy53YWl0UmVhZCgiaW50MzIiKX1ieXRlcyh0KXt0aGlzLmxvZygiYnl0ZXMiLHQpO2xldCBlPXQuYnl0ZUxlbmd0aDt0aGlzLl9pbnQzMihlKSxuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcix0aGlzLm9mZnNldCkuc2V0KG5ldyBVaW50OEFycmF5KHQpKSx0aGlzLm9mZnNldCs9ZSx0aGlzLndhaXRSZWFkKCJieXRlcyIpfX1sZXQgcz0wLHI9MSxuPTIsbz00O2xldCBhPS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbD1uZXcgTWFwLGM9bmV3IE1hcDtmdW5jdGlvbiBoKHQsZSl7aWYoIXQpdGhyb3cgbmV3IEVycm9yKGUpfWNsYXNzIGZ7Y29uc3RydWN0b3IodCxlPSJyZWFkb25seSIpe3RoaXMuZGI9dCx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sZSksdGhpcy5zdG9yZT10aGlzLnRyYW5zLm9iamVjdFN0b3JlKCJkYXRhIiksdGhpcy5sb2NrVHlwZT0icmVhZG9ubHkiPT09ZT9yOm8sdGhpcy5jYWNoZWRGaXJzdEJsb2NrPW51bGwsdGhpcy5jdXJzb3I9bnVsbCx0aGlzLnByZXZSZWFkcz1udWxsfWFzeW5jIHByZWZldGNoRmlyc3RCbG9jayh0KXtsZXQgZT1hd2FpdCB0aGlzLmdldCgwKTtyZXR1cm4gdGhpcy5jYWNoZWRGaXJzdEJsb2NrPWUsZX1hc3luYyB3YWl0Q29tcGxldGUoKXtyZXR1cm4gbmV3IFByb21pc2UoKCh0LGUpPT57dGhpcy5jb21taXQoKSx0aGlzLmxvY2tUeXBlPT09bz8odGhpcy50cmFucy5vbmNvbXBsZXRlPWU9PnQoKSx0aGlzLnRyYW5zLm9uZXJyb3I9dD0+ZSh0KSk6YT90aGlzLnRyYW5zLm9uY29tcGxldGU9ZT0+dCgpOnQoKX0pKX1jb21taXQoKXt0aGlzLnRyYW5zLmNvbW1pdCYmdGhpcy50cmFucy5jb21taXQoKX1hc3luYyB1cGdyYWRlRXhjbHVzaXZlKCl7dGhpcy5jb21taXQoKSx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sInJlYWR3cml0ZSIpLHRoaXMuc3RvcmU9dGhpcy50cmFucy5vYmplY3RTdG9yZSgiZGF0YSIpLHRoaXMubG9ja1R5cGU9bztsZXQgdD10aGlzLmNhY2hlZEZpcnN0QmxvY2s7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYobnVsbCE9dCYmbnVsbCE9ZSl7bGV0IGk9bmV3IFVpbnQ4QXJyYXkodCkscz1uZXcgVWludDhBcnJheShlKTtmb3IobGV0IHQ9MjQ7dDw0MDt0KyspaWYoaVt0XSE9PXNbdF0pcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuIG51bGw9PXQmJm51bGw9PWV9KGF3YWl0IHRoaXMucHJlZmV0Y2hGaXJzdEJsb2NrKDUwMCksdCl9ZG93bmdyYWRlU2hhcmVkKCl7dGhpcy5jb21taXQoKSx0aGlzLnRyYW5zPXRoaXMuZGIudHJhbnNhY3Rpb24oWyJkYXRhIl0sInJlYWRvbmx5IiksdGhpcy5zdG9yZT10aGlzLnRyYW5zLm9iamVjdFN0b3JlKCJkYXRhIiksdGhpcy5sb2NrVHlwZT1yfWFzeW5jIGdldCh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLGkpPT57bGV0IHM9dGhpcy5zdG9yZS5nZXQodCk7cy5vbnN1Y2Nlc3M9dD0+e2Uocy5yZXN1bHQpfSxzLm9uZXJyb3I9dD0+aSh0KX0pKX1nZXRSZWFkRGlyZWN0aW9uKCl7bGV0IHQ9dGhpcy5wcmV2UmVhZHM7aWYodCl7aWYodFswXTx0WzFdJiZ0WzFdPHRbMl0mJnRbMl0tdFswXTwxMClyZXR1cm4ibmV4dCI7aWYodFswXT50WzFdJiZ0WzFdPnRbMl0mJnRbMF0tdFsyXTwxMClyZXR1cm4icHJldiJ9cmV0dXJuIG51bGx9cmVhZCh0KXtsZXQgZT0oKT0+bmV3IFByb21pc2UoKCh0LGUpPT57aWYobnVsbCE9dGhpcy5jdXJzb3JQcm9taXNlKXRocm93IG5ldyBFcnJvcigid2FpdEN1cnNvcigpIGNhbGxlZCBidXQgc29tZXRoaW5nIGVsc2UgaXMgYWxyZWFkeSB3YWl0aW5nIik7dGhpcy5jdXJzb3JQcm9taXNlPXtyZXNvbHZlOnQscmVqZWN0OmV9fSkpO2lmKHRoaXMuY3Vyc29yKXtsZXQgaT10aGlzLmN1cnNvcjtyZXR1cm4ibmV4dCI9PT1pLmRpcmVjdGlvbiYmdD5pLmtleSYmdDxpLmtleSsxMDA/KGkuYWR2YW5jZSh0LWkua2V5KSxlKCkpOiJwcmV2Ij09PWkuZGlyZWN0aW9uJiZ0PGkua2V5JiZ0Pmkua2V5LTEwMD8oaS5hZHZhbmNlKGkua2V5LXQpLGUoKSk6KHRoaXMuY3Vyc29yPW51bGwsdGhpcy5yZWFkKHQpKX17bGV0IGk9dGhpcy5nZXRSZWFkRGlyZWN0aW9uKCk7aWYoaSl7bGV0IHM7dGhpcy5wcmV2UmVhZHM9bnVsbCxzPSJwcmV2Ij09PWk/SURCS2V5UmFuZ2UudXBwZXJCb3VuZCh0KTpJREJLZXlSYW5nZS5sb3dlckJvdW5kKHQpO2xldCByPXRoaXMuc3RvcmUub3BlbkN1cnNvcihzLGkpO3JldHVybiByLm9uc3VjY2Vzcz10PT57bGV0IGU9dC50YXJnZXQucmVzdWx0O2lmKHRoaXMuY3Vyc29yPWUsbnVsbD09dGhpcy5jdXJzb3JQcm9taXNlKXRocm93IG5ldyBFcnJvcigiR290IGRhdGEgZnJvbSBjdXJzb3IgYnV0IG5vdGhpbmcgaXMgd2FpdGluZyBpdCIpO3RoaXMuY3Vyc29yUHJvbWlzZS5yZXNvbHZlKGU/ZS52YWx1ZTpudWxsKSx0aGlzLmN1cnNvclByb21pc2U9bnVsbH0sci5vbmVycm9yPXQ9PntpZihjb25zb2xlLmxvZygiQ3Vyc29yIGZhaWx1cmU6Iix0KSxudWxsPT10aGlzLmN1cnNvclByb21pc2UpdGhyb3cgbmV3IEVycm9yKCJHb3QgZGF0YSBmcm9tIGN1cnNvciBidXQgbm90aGluZyBpcyB3YWl0aW5nIGl0Iik7dGhpcy5jdXJzb3JQcm9taXNlLnJlamVjdCh0KSx0aGlzLmN1cnNvclByb21pc2U9bnVsbH0sZSgpfXJldHVybiBudWxsPT10aGlzLnByZXZSZWFkcyYmKHRoaXMucHJldlJlYWRzPVswLDAsMF0pLHRoaXMucHJldlJlYWRzLnB1c2godCksdGhpcy5wcmV2UmVhZHMuc2hpZnQoKSx0aGlzLmdldCh0KX19YXN5bmMgc2V0KHQpe3JldHVybiB0aGlzLnByZXZSZWFkcz1udWxsLG5ldyBQcm9taXNlKCgoZSxpKT0+e2xldCBzPXRoaXMuc3RvcmUucHV0KHQudmFsdWUsdC5rZXkpO3Mub25zdWNjZXNzPXQ9PmUocy5yZXN1bHQpLHMub25lcnJvcj10PT5pKHQpfSkpfWFzeW5jIGJ1bGtTZXQodCl7dGhpcy5wcmV2UmVhZHM9bnVsbDtmb3IobGV0IGUgb2YgdCl0aGlzLnN0b3JlLnB1dChlLnZhbHVlLGUua2V5KX19YXN5bmMgZnVuY3Rpb24gdSh0KXtyZXR1cm4gbmV3IFByb21pc2UoKChlLGkpPT57aWYobC5nZXQodCkpcmV0dXJuIHZvaWQgZShsLmdldCh0KSk7bGV0IHM9Z2xvYmFsVGhpcy5pbmRleGVkREIub3Blbih0LDIpO3Mub25zdWNjZXNzPWk9PntsZXQgcz1pLnRhcmdldC5yZXN1bHQ7cy5vbnZlcnNpb25jaGFuZ2U9KCk9Pntjb25zb2xlLmxvZygiY2xvc2luZyBiZWNhdXNlIHZlcnNpb24gY2hhbmdlZCIpLHMuY2xvc2UoKSxsLmRlbGV0ZSh0KX0scy5vbmNsb3NlPSgpPT57bC5kZWxldGUodCl9LGwuc2V0KHQscyksZShzKX0scy5vbnVwZ3JhZGVuZWVkZWQ9dD0+e2xldCBlPXQudGFyZ2V0LnJlc3VsdDtlLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoImRhdGEiKXx8ZS5jcmVhdGVPYmplY3RTdG9yZSgiZGF0YSIpfSxzLm9uYmxvY2tlZD10PT5jb25zb2xlLmxvZygiYmxvY2tlZCIsdCkscy5vbmVycm9yPXMub25hYm9ydD10PT5pKHQudGFyZ2V0LmVycm9yKX0pKX1hc3luYyBmdW5jdGlvbiB3KHQsZSxpKXtsZXQgcz1jLmdldCh0KTtpZihzKXtpZigicmVhZHdyaXRlIj09PWUmJnMubG9ja1R5cGU9PT1yKXRocm93IG5ldyBFcnJvcigiQXR0ZW1wdGVkIHdyaXRlIGJ1dCBvbmx5IGhhcyBTSEFSRUQgbG9jayIpO3JldHVybiBpKHMpfXM9bmV3IGYoYXdhaXQgdSh0KSxlKSxhd2FpdCBpKHMpLGF3YWl0IHMud2FpdENvbXBsZXRlKCl9YXN5bmMgZnVuY3Rpb24gZCh0LGUsaSl7bGV0IG49ZnVuY3Rpb24odCl7cmV0dXJuIGMuZ2V0KHQpfShlKTtpZihpPT09cil7aWYobnVsbD09bil0aHJvdyBuZXcgRXJyb3IoIlVubG9jayBlcnJvciAoU0hBUkVEKTogbm8gdHJhbnNhY3Rpb24gcnVubmluZyIpO24ubG9ja1R5cGU9PT1vJiZuLmRvd25ncmFkZVNoYXJlZCgpfWVsc2UgaT09PXMmJm4mJihhd2FpdCBuLndhaXRDb21wbGV0ZSgpLGMuZGVsZXRlKGUpKTt0LmludDMyKDApLHQuZmluYWxpemUoKX1hc3luYyBmdW5jdGlvbiBnKHQsZSl7bGV0IGk9dC5zdHJpbmcoKTtzd2l0Y2goaSl7Y2FzZSJwcm9maWxlLXN0YXJ0Ijp0LmRvbmUoKSxlLmludDMyKDApLGUuZmluYWxpemUoKSxnKHQsZSk7YnJlYWs7Y2FzZSJwcm9maWxlLXN0b3AiOnQuZG9uZSgpLGF3YWl0IG5ldyBQcm9taXNlKCh0PT5zZXRUaW1lb3V0KHQsMWUzKSkpLGUuaW50MzIoMCksZS5maW5hbGl6ZSgpLGcodCxlKTticmVhaztjYXNlIndyaXRlQmxvY2tzIjp7bGV0IGk9dC5zdHJpbmcoKSxzPVtdO2Zvcig7IXQuZG9uZSgpOyl7bGV0IGU9dC5pbnQzMigpLGk9dC5ieXRlcygpO3MucHVzaCh7cG9zOmUsZGF0YTppfSl9YXdhaXQgYXN5bmMgZnVuY3Rpb24odCxlLGkpe3JldHVybiB3KGUsInJlYWR3cml0ZSIsKGFzeW5jIGU9Pnthd2FpdCBlLmJ1bGtTZXQoaS5tYXAoKHQ9Pih7a2V5OnQucG9zLHZhbHVlOnQuZGF0YX0pKSkpLHQuaW50MzIoMCksdC5maW5hbGl6ZSgpfSkpfShlLGkscyksZyh0LGUpO2JyZWFrfWNhc2UicmVhZEJsb2NrIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHcoZSwicmVhZG9ubHkiLChhc3luYyBlPT57bGV0IHM9YXdhaXQgZS5yZWFkKGkpO251bGw9PXM/dC5ieXRlcyhuZXcgQXJyYXlCdWZmZXIoMCkpOnQuYnl0ZXMocyksdC5maW5hbGl6ZSgpfSkpfShlLGkscyksZyh0LGUpO2JyZWFrfWNhc2UicmVhZE1ldGEiOntsZXQgaT10LnN0cmluZygpO3QuZG9uZSgpLGF3YWl0IGFzeW5jIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHcoZSwicmVhZG9ubHkiLChhc3luYyBpPT57dHJ5e2NvbnNvbGUubG9nKCJSZWFkaW5nIG1ldGEuLi4iKTtsZXQgcz1hd2FpdCBpLmdldCgtMSk7aWYoY29uc29sZS5sb2coYEdvdCBtZXRhIGZvciAke2V9OmAscyksbnVsbD09cyl0LmludDMyKC0xKSx0LmludDMyKDQwOTYpLHQuZmluYWxpemUoKTtlbHNle2xldCBlPWF3YWl0IGkuZ2V0KDApLHI9NDA5NjtlJiYocj0yNTYqbmV3IFVpbnQxNkFycmF5KGUpWzhdKSx0LmludDMyKHMuc2l6ZSksdC5pbnQzMihyKSx0LmZpbmFsaXplKCl9fWNhdGNoKGUpe2NvbnNvbGUubG9nKGUpLHQuaW50MzIoLTEpLHQuaW50MzIoLTEpLHQuZmluYWxpemUoKX19KSl9KGUsaSksZyh0LGUpO2JyZWFrfWNhc2Uid3JpdGVNZXRhIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHcoZSwicmVhZHdyaXRlIiwoYXN5bmMgZT0+e3RyeXthd2FpdCBlLnNldCh7a2V5Oi0xLHZhbHVlOml9KSx0LmludDMyKDApLHQuZmluYWxpemUoKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKSx0LmludDMyKC0xKSx0LmZpbmFsaXplKCl9fSkpfShlLGkse3NpemU6c30pLGcodCxlKTticmVha31jYXNlImNsb3NlRmlsZSI6e2xldCBpPXQuc3RyaW5nKCk7dC5kb25lKCksZS5pbnQzMigwKSxlLmZpbmFsaXplKCksZnVuY3Rpb24odCl7bGV0IGU9bC5nZXQodCk7ZSYmKGUuY2xvc2UoKSxsLmRlbGV0ZSh0KSl9KGkpLHNlbGYuY2xvc2UoKTticmVha31jYXNlImxvY2tGaWxlIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBhc3luYyBmdW5jdGlvbih0LGUsaSl7bGV0IHM9Yy5nZXQoZSk7aWYocylpZihpPnMubG9ja1R5cGUpe2gocy5sb2NrVHlwZT09PXIsYFVwcmFkaW5nIGxvY2sgdHlwZSBmcm9tICR7cy5sb2NrVHlwZX0gaXMgaW52YWxpZGApLGgoaT09PW58fGk9PT1vLGBVcGdyYWRpbmcgbG9jayB0eXBlIHRvICR7aX0gaXMgaW52YWxpZGApO2xldCBlPWF3YWl0IHMudXBncmFkZUV4Y2x1c2l2ZSgpO3QuaW50MzIoZT8wOi0xKSx0LmZpbmFsaXplKCl9ZWxzZSBoKHMubG9ja1R5cGU9PT1pLGBEb3duZ3JhZGluZyBsb2NrIHRvICR7aX0gaXMgaW52YWxpZGApLHQuaW50MzIoMCksdC5maW5hbGl6ZSgpO2Vsc2V7aChpPT09cixgTmV3IGxvY2tzIG11c3Qgc3RhcnQgYXMgU0hBUkVEIGluc3RlYWQgb2YgJHtpfWApO2xldCBzPW5ldyBmKGF3YWl0IHUoZSkpO2F3YWl0IHMucHJlZmV0Y2hGaXJzdEJsb2NrKDUwMCksYy5zZXQoZSxzKSx0LmludDMyKDApLHQuZmluYWxpemUoKX19KGUsaSxzKSxnKHQsZSk7YnJlYWt9Y2FzZSJ1bmxvY2tGaWxlIjp7bGV0IGk9dC5zdHJpbmcoKSxzPXQuaW50MzIoKTt0LmRvbmUoKSxhd2FpdCBkKGUsaSxzKSxnKHQsZSk7YnJlYWt9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWV0aG9kOiAiK2kpfX1zZWxmLm9ubWVzc2FnZT10PT57c3dpdGNoKHQuZGF0YS50eXBlKXtjYXNlImluaXQiOntsZXRbcyxyXT10LmRhdGEuYnVmZmVycztnKG5ldyBlKHMse25hbWU6ImFyZ3MiLGRlYnVnOiExfSksbmV3IGkocix7bmFtZToicmVzdWx0cyIsZGVidWc6ITF9KSk7YnJlYWt9fX19KCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport default WorkerFactory;\n"],"names":["decodeBase64","base64","enableUnicode","binaryString","atob","binaryView","Uint8Array","length","i","n","charCodeAt","String","fromCharCode","apply","Uint16Array","buffer","createURL","sourcemapArg","enableUnicodeArg","sourcemap","undefined","source","start","indexOf","body","substring","blob","Blob","type","URL","createObjectURL","createBase64WorkerFactory","url","WorkerFactory","options","Worker"],"sourceRoot":""}
|