UNPKG

20.4 kBSource Map (JSON)View Raw
1{"version":3,"file":"index.modern.js","sources":["../src/functions.js","../src/index.js"],"sourcesContent":["/**\n * Created on 1399/10/10 (2020/12/30).\n * @author {@link https://mirismaili.github.io S. Mahdi Mir-Ismaili}\n */\n\nexport const isObject = variable => Object.prototype.toString.call(variable) === '[object Object]'\n\n//***********************************************************************************************/\n\nexport class Select {\n\tconstructor(value) {\n\t\tif (arguments.length)\n\t\t\tthis.value = value\n\t}\n}\n\nexport const SELECT = new Select\n\nexport function select(value) {\n\treturn arguments.length ? new Select(value) : new Select\n}\n\n//***********************************************************************************************/\n\n// noinspection JSUnusedGlobalSymbols\nexport class StateSetter {\n\tconstructor(setState, deepSelector, componentName) {\n\t\tObject.assign(this, {setState, deepSelector, componentName})\n\t}\n\n\tsetFromGlobal(newGlobalState) {\n\t\tthis.setState(selectFromState(newGlobalState, this.deepSelector))\n\t}\n}\n\nclass StateSetters extends Array {}\n\n//***********************************************************************************************/\n\nexport const generateStateSetters = (state) => {\n\tconst setters = {}\n\n\tgenerateStateSettersR(state, setters)\n\n\treturn setters\n\n\tfunction generateStateSettersR(state, setters) {\n\t\tfor (const [k, subState] of Object.entries(state)) {\n\t\t\tif (isObject(subState)) {\n\t\t\t\tsetters[k] = {}\n\t\t\t\tgenerateStateSettersR(subState, setters[k])\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tsetters[k] = new StateSetters\n\t\t}\n\t}\n}\n\n// noinspection JSUnusedGlobalSymbols\nexport const getDeepSelector = (selectedState) => {\n\tconst selector = {}\n\tgetDeepSelectorR(selectedState, selector)\n\n\treturn selector\n\n\tfunction getDeepSelectorR(selected, selector) {\n\t\tfor (const [k, subSelectedState] of Object.entries(selected)) {\n\t\t\tif (isObject(subSelectedState)) {\n\t\t\t\tgetDeepSelectorR(subSelectedState, selector[k] = {})\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tselector[k] = SELECT\n\t\t}\n\t}\n}\n\nexport function selectFromState(state, deepSelector) {\n\tconst selectedState = {}\n\n\tselectFromStateR(state, deepSelector, selectedState)\n\n\treturn selectedState\n\n\tfunction selectFromStateR(state, deepSelector, selected) {\n\t\tfor (const [k, subDeepSelector] of Object.entries(deepSelector)) {\n\t\t\tif (subDeepSelector instanceof Select) {\n\t\t\t\tselected[k] = state[k]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\t// isObject(subDeepSelector):\n\t\t\tselectFromStateR(state[k], subDeepSelector, selected[k] = {})\n\t\t}\n\t}\n}\n\n// noinspection JSUnusedGlobalSymbols\nexport const registerNewStateSetter = (setter, newSetter, deepSelector) => {\n\tlet exploringPath = 'state'\n\tregisterNewStateSetterR(deepSelector, setter)\n\n\tfunction registerNewStateSetterR(selector, setter) {\n\t\tfor (const [k, subDeepSelector] of Object.entries(selector)) {\n\t\t\tconst subSetter = setter[k]\n\n\t\t\tif (!(subDeepSelector instanceof Select)) {\n\t\t\t\tconst previousExploringPath = exploringPath\n\t\t\t\texploringPath += '.' + k\n\t\t\t\tregisterNewStateSetterR(subDeepSelector, subSetter)\n\t\t\t\texploringPath = previousExploringPath\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif (!(subSetter instanceof StateSetters))\n\t\t\t\tconsole.error('graph-reducer ERROR!',\n\t\t\t\t\t`subSetter isn't instanceof StateSetters! This means deepSelector hasn't been deep enough!\\n`,\n\t\t\t\t\t{exploringPath, k, subDeepSelector, newSetter},\n\t\t\t\t)\n\n\t\t\tif (subSetter.indexOf(newSetter) !== -1)\n\t\t\t\tconsole.error('`newSetter` already registered!',\n\t\t\t\t\t{exploringPath, k, subDeepSelector, newSetter})\n\t\t\telse\n\t\t\t\tsubSetter.push(newSetter)\n\t\t}\n\t}\n}\n","import {deepClone} from '@graphix/merge'\nimport {isObject, Select, SELECT} from './functions'\n\n/**\n * Created on 1399/9/12 (2020/12/2).\n * @author {@link https://mirismaili.github.io S. Mahdi Mir-Ismaili}\n */\n\nconst debugEnv = process.env.DEBUG?.split(',') ?? []\nconst debugMode = true\ndebugEnv.indexOf('graph-reducer') !== -1 ||\ndebugEnv.indexOf('*') !== -1 && debugEnv.indexOf('-graph-reducer') === -1\n\nconst dr = Object.fromEntries(\n\t['group', 'groupCollapsed', 'groupEnd', 'debug', 'log', 'info', 'warn', 'error', 'trace'].map(x =>\n\t\t[x, debugMode ? console[x].bind(console, 'GRAPH-REDUCER:') : () => {}],\n\t),\n)\n//***********************************************************************************************/\n\n/**\n * @param srcState\n * @param paylector payload-or-selector(-or-both)\n * @param stateSetters\n * @param maxExploreDepth\n * @param mismatchWarning\n * @returns {{onlySelectionHappened: boolean, toFireStateSetters: *[], noTransform: boolean, newState: *,\n * selectedState: *}}\n */\nexport const graphReducer = (srcState, paylector, stateSetters, {\n\tmaxExploreDepth = 64,\n\tmismatchWarning = true,\n} = {}) => {\n\tif (!isObject(paylector)) throw new Error(`payload is not an Object:\\n${paylector}`)\n\n\tconst toFireStateSetters = []\n\tlet onlySelectionHappened = true\n\tlet noTransform = true\n\tlet badTransform = false\n\tlet exploringDepth = 0\n\tlet exploringPath = 'state'\n\tconst newState = {...srcState}\n\tconst selected = {}\n\n\treduceR(newState, paylector, selected, 'state', stateSetters, mismatchWarning)\n\n\tif (badTransform) {\n\t\tnoTransform = null\n\t\tonlySelectionHappened = null\n\t}\n\n\treturn {\n\t\tnewState,\n\t\tselectedState: selected,\n\t\tnoTransform,\n\t\tonlySelectionHappened,\n\t\ttoFireStateSetters: Array.from(new Set(toFireStateSetters)), // remove duplicates\n\t}\n\n\t/**\n\t * @param state Must be an object (`{}`)\n\t * @param paylector Must be an object (`{}`)\n\t * @param selected\n\t * @param key\n\t * @param stateSetters\n\t * @param mismatchWarning\n\t */\n\tfunction reduceR(state, paylector, selected, key, stateSetters, mismatchWarning) {\n\t\tif (debugMode) {\n\t\t\tdr.groupCollapsed(exploringDepth, exploringPath)\n\t\t\tdr.debug(deepClone({\n\t\t\t\t[key]: state,\n\t\t\t\tpaylector, selected, stateSetters,\n\t\t\t}))\n\t\t}\n\n\t\tif (exploringDepth > maxExploreDepth) {\n\t\t\tdr.groupEnd()\n\t\t\tconsole.error('exploringDepth (%d) exceeds maxExploreDepth (%d)', exploringDepth, maxExploreDepth)\n\t\t\tbadTransform = true\n\t\t\treturn\n\t\t}\n\n\t\tfor (let [k, subState] of Object.entries(state)) {\n\t\t\tlet subPaylector\n\t\t\tlet selectMode\n\t\t\tif (paylector === SELECT) {\n\t\t\t\tsubPaylector = SELECT\n\t\t\t\tselectMode = true\n\t\t\t} else {\n\t\t\t\tsubPaylector = paylector[k]\n\t\t\t\tif (typeof subPaylector === 'function')\n\t\t\t\t\tsubPaylector = subPaylector(subState, srcState)\n\t\t\t\tif (subPaylector instanceof Select)\n\t\t\t\t\tselectMode = true\n\t\t\t}\n\n\t\t\tconst subStateIsObject = isObject(subState)\n\n\t\t\tdeepExploring: {\n\t\t\t\tif (selectMode) {\n\t\t\t\t\tif (!subStateIsObject) {\n\t\t\t\t\t\tif ('value' in subPaylector) {\n\t\t\t\t\t\t\tselected[k] = subPaylector =\n\t\t\t\t\t\t\t\ttypeof subPaylector.value === 'function' ? subPaylector.value(subState) : subPaylector.value\n\t\t\t\t\t\t\tbreak deepExploring\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tselected[k] = subState\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tif ('value' in subPaylector)\n\t\t\t\t\t\tconsole.error('`subPaylector` can have `value` property only at leaf (final) nodes.',\n\t\t\t\t\t\t\t'The `value` was ignored.',\n\t\t\t\t\t\t\t{subPaylector, subState, exploringPath})\n\n\t\t\t\t\tselected[k] = {...subState}\n\t\t\t\t\t// Go for deep-exploring ...\n\t\t\t\t}\n\t\t\t\telse if (isObject(subPaylector)) {\n\t\t\t\t\tif (!subStateIsObject) {\n\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'Mismatched types! `subPaylector` is a %s, but `subState` is a %s\\n%o',\n\t\t\t\t\t\t\tObject.prototype.toString.call(subPaylector),\n\t\t\t\t\t\t\tObject.prototype.toString.call(subState),\n\t\t\t\t\t\t\t{subPaylector, subState, exploringPath},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t\tselected[k] = {}\n\t\t\t\t}\n\n\t\t\t\t// deep-exploring:\n\t\t\t\tif (subStateIsObject) {\n\t\t\t\t\tstate[k] = {...subState}\n\n\t\t\t\t\tif (!(isObject(subPaylector))) {\n\t\t\t\t\t\tif (k in paylector)\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t'Mismatched types! `subPaylector` is a %s, but `subState` is a %s. ' +\n\t\t\t\t\t\t\t\t'`subPaylector` was ignored\\n%o',\n\t\t\t\t\t\t\t\tObject.prototype.toString.call(subPaylector),\n\t\t\t\t\t\t\t\tObject.prototype.toString.call(subState),\n\t\t\t\t\t\t\t\t{subPaylector, subState, exploringPath},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\tsubPaylector = {}\n\t\t\t\t\t}\n\n\t\t\t\t\texploringDepth++\n\t\t\t\t\tconst previousExploringPath = exploringPath\n\t\t\t\t\texploringPath += '.' + k\n\n\t\t\t\t\treduceR(state[k], subPaylector, selected?.[k], k, stateSetters[k], mismatchWarning)\n\n\t\t\t\t\tif (selected && !Object.keys(selected).length)\n\t\t\t\t\t\tdelete selected[k]\n\n\t\t\t\t\texploringPath = previousExploringPath\n\t\t\t\t\texploringDepth--\n\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tif (!(k in paylector)) continue // `k` isn't in `paylector` and we know `subState` isn't `{}` here\n\t\t\t}\n\n\t\t\tonlySelectionHappened = false\n\n\t\t\tlet anyDifference = false\n\n\t\t\tif (subPaylector instanceof Array) {\n\t\t\t\tif (!(subState instanceof Array)) {\n\t\t\t\t\tif (mismatchWarning)\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t'Mismatched types! `subPaylector` is an Array, but `subState` is a %s\\n%o',\n\t\t\t\t\t\t\tObject.prototype.toString.call(subState),\n\t\t\t\t\t\t\t{subPaylector, subState, exploringPath},\n\t\t\t\t\t\t)\n\t\t\t\t\tsubState = state[k] = []\n\t\t\t\t}\n\t\t\t\tfor (const [i, value] of subPaylector.entries()) if (subState[i] !== value) {\n\t\t\t\t\tanyDifference = true\n\t\t\t\t\tsubState[i] = value\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tanyDifference = subState !== subPaylector\n\t\t\t\tstate[k] = subPaylector\n\t\t\t}\n\n\t\t\tif (anyDifference) {\n\t\t\t\tnoTransform = false\n\t\t\t\ttoFireStateSetters.push(...stateSetters[k])\n\t\t\t}\n\t\t}\n\n\t\tif (debugMode) {\n\t\t\tdr.debug({[key]: state, selected, toFireStateSetters})\n\t\t\tdr.groupEnd()\n\t\t}\n\t}\n}\n\nexport default graphReducer\n\nexport {\n\tStateSetter,\n\tgenerateStateSetters,\n\tgetDeepSelector,\n\tregisterNewStateSetter,\n\tselectFromState,\n\tisObject,\n\tselect,\n\tSELECT,\n} from './functions'\n"],"names":["isObject","variable","Object","prototype","toString","call","Select","value","arguments","length","SELECT","select","StateSetter","setState","deepSelector","componentName","assign","setFromGlobal","newGlobalState","selectFromState","StateSetters","Array","generateStateSetters","state","setters","generateStateSettersR","entries","k","subState","getDeepSelector","selectedState","selector","getDeepSelectorR","selected","subSelectedState","selectFromStateR","subDeepSelector","registerNewStateSetter","setter","newSetter","exploringPath","registerNewStateSetterR","subSetter","previousExploringPath","console","error","indexOf","push","debugEnv","process","env","DEBUG","split","dr","fromEntries","map","x","debugMode","bind","graphReducer","srcState","paylector","stateSetters","maxExploreDepth","mismatchWarning","Error","toFireStateSetters","onlySelectionHappened","noTransform","badTransform","exploringDepth","newState","reduceR","from","Set","key","groupCollapsed","debug","deepClone","groupEnd","subPaylector","selectMode","subStateIsObject","deepExploring","keys","anyDifference","warn","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKaA,QAAQ,GAAG,SAAXA,QAAW,CAAAC,QAAQ;AAAA,SAAIC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,QAA/B,MAA6C,iBAAjD;AAAA;IAInBK,MAAb,GACC,gBAAYC,KAAZ,EAAmB;AAClB,MAAIC,SAAS,CAACC,MAAd,EACC,KAAKF,KAAL,GAAaA,KAAb;AACD,CAJF;IAOaG,MAAM,GAAG,IAAIJ,MAAJ;AAEf,SAASK,MAAT,CAAgBJ,KAAhB,EAAuB;AAC7B,SAAOC,SAAS,CAACC,MAAV,GAAmB,IAAIH,MAAJ,CAAWC,KAAX,CAAnB,GAAuC,IAAID,MAAJ,EAA9C;AACA;IAKYM,WAAb;AACC,uBAAYC,QAAZ,EAAsBC,YAAtB,EAAoCC,aAApC,EAAmD;AAClDb,IAAAA,MAAM,CAACc,MAAP,CAAc,IAAd,EAAoB;AAACH,MAAAA,QAAQ,EAARA,QAAD;AAAWC,MAAAA,YAAY,EAAZA,YAAX;AAAyBC,MAAAA,aAAa,EAAbA;AAAzB,KAApB;AACA;;AAHF;;AAAA,SAKCE,aALD,GAKC,uBAAcC,cAAd,EAA8B;AAC7B,SAAKL,QAAL,CAAcM,eAAe,CAACD,cAAD,EAAiB,KAAKJ,YAAtB,CAA7B;AACA,GAPF;;AAAA;AAAA;;IAUMM;;;;;;;;iCAAqBC;;IAIdC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAW;AAC9C,MAAMC,OAAO,GAAG,EAAhB;AAEAC,EAAAA,qBAAqB,CAACF,KAAD,EAAQC,OAAR,CAArB;AAEA,SAAOA,OAAP;;AAEA,WAASC,qBAAT,CAA+BF,KAA/B,EAAsCC,OAAtC,EAA+C;AAC9C,uCAA4BtB,MAAM,CAACwB,OAAP,CAAeH,KAAf,CAA5B,qCAAmD;AAAA;AAAA,UAAvCI,CAAuC;AAAA,UAApCC,QAAoC;;AAClD,UAAI5B,QAAQ,CAAC4B,QAAD,CAAZ,EAAwB;AACvBJ,QAAAA,OAAO,CAACG,CAAD,CAAP,GAAa,EAAb;AACAF,QAAAA,qBAAqB,CAACG,QAAD,EAAWJ,OAAO,CAACG,CAAD,CAAlB,CAArB;AACA;AACA;;AAEDH,MAAAA,OAAO,CAACG,CAAD,CAAP,GAAa,IAAIP,YAAJ,EAAb;AACA;AACD;AACD;IAGYS,eAAe,GAAG,SAAlBA,eAAkB,CAACC,aAAD,EAAmB;AACjD,MAAMC,QAAQ,GAAG,EAAjB;AACAC,EAAAA,gBAAgB,CAACF,aAAD,EAAgBC,QAAhB,CAAhB;AAEA,SAAOA,QAAP;;AAEA,WAASC,gBAAT,CAA0BC,QAA1B,EAAoCF,QAApC,EAA8C;AAC7C,yCAAoC7B,MAAM,CAACwB,OAAP,CAAeO,QAAf,CAApC,wCAA8D;AAAA;AAAA,UAAlDN,CAAkD;AAAA,UAA/CO,gBAA+C;;AAC7D,UAAIlC,QAAQ,CAACkC,gBAAD,CAAZ,EAAgC;AAC/BF,QAAAA,gBAAgB,CAACE,gBAAD,EAAmBH,QAAQ,CAACJ,CAAD,CAAR,GAAc,EAAjC,CAAhB;AACA;AACA;;AAEDI,MAAAA,QAAQ,CAACJ,CAAD,CAAR,GAAcjB,MAAd;AACA;AACD;AACD;AAEM,SAASS,eAAT,CAAyBI,KAAzB,EAAgCT,YAAhC,EAA8C;AACpD,MAAMgB,aAAa,GAAG,EAAtB;AAEAK,EAAAA,gBAAgB,CAACZ,KAAD,EAAQT,YAAR,EAAsBgB,aAAtB,CAAhB;AAEA,SAAOA,aAAP;;AAEA,WAASK,gBAAT,CAA0BZ,KAA1B,EAAiCT,YAAjC,EAA+CmB,QAA/C,EAAyD;AACxD,yCAAmC/B,MAAM,CAACwB,OAAP,CAAeZ,YAAf,CAAnC,wCAAiE;AAAA;AAAA,UAArDa,CAAqD;AAAA,UAAlDS,eAAkD;;AAChE,UAAIA,eAAe,YAAY9B,MAA/B,EAAuC;AACtC2B,QAAAA,QAAQ,CAACN,CAAD,CAAR,GAAcJ,KAAK,CAACI,CAAD,CAAnB;AACA;AACA;;AAEDQ,MAAAA,gBAAgB,CAACZ,KAAK,CAACI,CAAD,CAAN,EAAWS,eAAX,EAA4BH,QAAQ,CAACN,CAAD,CAAR,GAAc,EAA1C,CAAhB;AACA;AACD;AACD;IAGYU,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,MAAD,EAASC,SAAT,EAAoBzB,YAApB,EAAqC;AAC1E,MAAI0B,aAAa,GAAG,OAApB;AACAC,EAAAA,uBAAuB,CAAC3B,YAAD,EAAewB,MAAf,CAAvB;;AAEA,WAASG,uBAAT,CAAiCV,QAAjC,EAA2CO,MAA3C,EAAmD;AAClD,yCAAmCpC,MAAM,CAACwB,OAAP,CAAeK,QAAf,CAAnC,wCAA6D;AAAA;AAAA,UAAjDJ,CAAiD;AAAA,UAA9CS,eAA8C;AAC5D,UAAMM,SAAS,GAAGJ,MAAM,CAACX,CAAD,CAAxB;;AAEA,UAAI,EAAES,eAAe,YAAY9B,MAA7B,CAAJ,EAA0C;AACzC,YAAMqC,qBAAqB,GAAGH,aAA9B;AACAA,QAAAA,aAAa,IAAI,MAAMb,CAAvB;AACAc,QAAAA,uBAAuB,CAACL,eAAD,EAAkBM,SAAlB,CAAvB;AACAF,QAAAA,aAAa,GAAGG,qBAAhB;AACA;AACA;;AAED,UAAI,EAAED,SAAS,YAAYtB,YAAvB,CAAJ,EACCwB,OAAO,CAACC,KAAR,CAAc,sBAAd,iGAEC;AAACL,QAAAA,aAAa,EAAbA,aAAD;AAAgBb,QAAAA,CAAC,EAADA,CAAhB;AAAmBS,QAAAA,eAAe,EAAfA,eAAnB;AAAoCG,QAAAA,SAAS,EAATA;AAApC,OAFD;AAKD,UAAIG,SAAS,CAACI,OAAV,CAAkBP,SAAlB,MAAiC,CAAC,CAAtC,EACCK,OAAO,CAACC,KAAR,CAAc,iCAAd,EACC;AAACL,QAAAA,aAAa,EAAbA,aAAD;AAAgBb,QAAAA,CAAC,EAADA,CAAhB;AAAmBS,QAAAA,eAAe,EAAfA,eAAnB;AAAoCG,QAAAA,SAAS,EAATA;AAApC,OADD,EADD,KAICG,SAAS,CAACK,IAAV,CAAeR,SAAf;AACD;AACD;AACD;;;ACvHD,IAAMS,QAAQ,kDAAGC,OAAO,CAACC,GAAR,CAAYC,KAAf,uDAAG,mBAAmBC,KAAnB,CAAyB,GAAzB,CAAH,oCAAoC,EAAlD;AACA,AACAJ,QAAQ,CAACF,OAAT,CAAiB,eAAjB,MAAsC,CAAC,CAAvC,IACAE,QAAQ,CAACF,OAAT,CAAiB,GAAjB,MAA0B,CAAC,CAA3B,IAAgCE,QAAQ,CAACF,OAAT,CAAiB,gBAAjB,MAAuC,CAAC,CADxE;AAGA,IAAMO,EAAE,GAAGnD,MAAM,CAACoD,WAAP,CACV,CAAC,OAAD,EAAU,gBAAV,EAA4B,UAA5B,EAAwC,OAAxC,EAAiD,KAAjD,EAAwD,MAAxD,EAAgE,MAAhE,EAAwE,OAAxE,EAAiF,OAAjF,EAA0FC,GAA1F,CAA8F,UAAAC,CAAC;AAAA,SAC9F,CAACA,CAAD,EAAIC,CAAYb,OAAO,CAACY,CAAD,CAAP,CAAWE,IAAX,CAAgBd,OAAhB,EAAyB,gBAAzB,CAAH,CAAb,CAD8F;AAAA,CAA/F,CADU,CAAX;AAgBA,IAAae,YAAY,GAAG,SAAfA,YAAe,CAACC,QAAD,EAAWC,SAAX,EAAsBC,YAAtB,SAGjB;AAAA,gCAAP,EAAO;AAAA,kCAFVC,eAEU;AAAA,MAFVA,eAEU,qCAFQ,EAER;AAAA,kCADVC,eACU;AAAA,MADVA,eACU,qCADQ,IACR;;AACV,MAAI,CAAChE,QAAQ,CAAC6D,SAAD,CAAb,EAA0B,MAAM,IAAII,KAAJ,iCAAwCJ,SAAxC,CAAN;AAE1B,MAAMK,kBAAkB,GAAG,EAA3B;AACA,MAAIC,qBAAqB,GAAG,IAA5B;AACA,MAAIC,WAAW,GAAG,IAAlB;AACA,MAAIC,YAAY,GAAG,KAAnB;AACA,MAAIC,cAAc,GAAG,CAArB;AACA,MAAI9B,aAAa,GAAG,OAApB;;AACA,MAAM+B,QAAQ,gBAAOX,QAAP,CAAd;;AACA,MAAM3B,QAAQ,GAAG,EAAjB;AAEAuC,EAAAA,OAAO,CAACD,QAAD,EAAWV,SAAX,EAAsB5B,QAAtB,EAAgC,OAAhC,EAAyC6B,YAAzC,EAAuDE,eAAvD,CAAP;;AAEA,MAAIK,YAAJ,EAAkB;AACjBD,IAAAA,WAAW,GAAG,IAAd;AACAD,IAAAA,qBAAqB,GAAG,IAAxB;AACA;;AAED,SAAO;AACNI,IAAAA,QAAQ,EAARA,QADM;AAENzC,IAAAA,aAAa,EAAEG,QAFT;AAGNmC,IAAAA,WAAW,EAAXA,WAHM;AAIND,IAAAA,qBAAqB,EAArBA,qBAJM;AAKND,IAAAA,kBAAkB,EAAE7C,KAAK,CAACoD,IAAN,CAAW,IAAIC,GAAJ,CAAQR,kBAAR,CAAX;AALd,GAAP;;AAgBA,WAASM,OAAT,CAAiBjD,KAAjB,EAAwBsC,SAAxB,EAAmC5B,QAAnC,EAA6C0C,GAA7C,EAAkDb,YAAlD,EAAgEE,eAAhE,EAAiF;AAChF,IAAe;AAAA;;AACdX,MAAAA,EAAE,CAACuB,cAAH,CAAkBN,cAAlB,EAAkC9B,aAAlC;AACAa,MAAAA,EAAE,CAACwB,KAAH,CAASC,SAAS,8BAChBH,GADgB,IACVpD,KADU,aAEjBsC,SAFiB,GAEjBA,SAFiB,aAEN5B,QAFM,GAENA,QAFM,aAEI6B,YAFJ,GAEIA,YAFJ,cAAlB;AAIA;;AAED,QAAIQ,cAAc,GAAGP,eAArB,EAAsC;AACrCV,MAAAA,EAAE,CAAC0B,QAAH;AACAnC,MAAAA,OAAO,CAACC,KAAR,CAAc,kDAAd,EAAkEyB,cAAlE,EAAkFP,eAAlF;AACAM,MAAAA,YAAY,GAAG,IAAf;AACA;AACA;;AAED,uCAA0BnE,MAAM,CAACwB,OAAP,CAAeH,KAAf,CAA1B,qCAAiD;AAAA;AAAA,UAAvCI,CAAuC;AAAA,UAApCC,QAAoC;AAChD,UAAIoD,YAAY,SAAhB;AACA,UAAIC,UAAU,SAAd;;AACA,UAAIpB,SAAS,KAAKnD,MAAlB,EAA0B;AACzBsE,QAAAA,YAAY,GAAGtE,MAAf;AACAuE,QAAAA,UAAU,GAAG,IAAb;AACA,OAHD,MAGO;AACND,QAAAA,YAAY,GAAGnB,SAAS,CAAClC,CAAD,CAAxB;AACA,YAAI,OAAOqD,YAAP,KAAwB,UAA5B,EACCA,YAAY,GAAGA,YAAY,CAACpD,QAAD,EAAWgC,QAAX,CAA3B;AACD,YAAIoB,YAAY,YAAY1E,MAA5B,EACC2E,UAAU,GAAG,IAAb;AACD;;AAED,UAAMC,gBAAgB,GAAGlF,QAAQ,CAAC4B,QAAD,CAAjC;;AAEAuD,MAAAA,aAAa,EAAE;AACd,YAAIF,UAAJ,EAAgB;AACf,cAAI,CAACC,gBAAL,EAAuB;AACtB,gBAAI,WAAWF,YAAf,EAA6B;AAC5B/C,cAAAA,QAAQ,CAACN,CAAD,CAAR,GAAcqD,YAAY,GACzB,OAAOA,YAAY,CAACzE,KAApB,KAA8B,UAA9B,GAA2CyE,YAAY,CAACzE,KAAb,CAAmBqB,QAAnB,CAA3C,GAA0EoD,YAAY,CAACzE,KADxF;AAEA,oBAAM4E,aAAN;AACA;;AAEDlD,YAAAA,QAAQ,CAACN,CAAD,CAAR,GAAcC,QAAd;AACA;AACA;;AAED,cAAI,WAAWoD,YAAf,EACCpC,OAAO,CAACC,KAAR,CAAc,sEAAd,EACC,0BADD,EAEC;AAACmC,YAAAA,YAAY,EAAZA,YAAD;AAAepD,YAAAA,QAAQ,EAARA,QAAf;AAAyBY,YAAAA,aAAa,EAAbA;AAAzB,WAFD;AAIDP,UAAAA,QAAQ,CAACN,CAAD,CAAR,gBAAkBC,QAAlB;AAEA,SAnBD,MAoBK,IAAI5B,QAAQ,CAACgF,YAAD,CAAZ,EAA4B;AAChC,cAAI,CAACE,gBAAL,EAAuB;AACtBtC,YAAAA,OAAO,CAACC,KAAR,CACC,sEADD,EAEC3C,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B2E,YAA/B,CAFD,EAGC9E,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BuB,QAA/B,CAHD,EAIC;AAACoD,cAAAA,YAAY,EAAZA,YAAD;AAAepD,cAAAA,QAAQ,EAARA,QAAf;AAAyBY,cAAAA,aAAa,EAAbA;AAAzB,aAJD;AAMA;AACA;;AAEDP,UAAAA,QAAQ,CAACN,CAAD,CAAR,GAAc,EAAd;AACA;;AAGD,YAAIuD,gBAAJ,EAAsB;AACrB3D,UAAAA,KAAK,CAACI,CAAD,CAAL,gBAAeC,QAAf;;AAEA,cAAI,CAAE5B,QAAQ,CAACgF,YAAD,CAAd,EAA+B;AAC9B,gBAAIrD,CAAC,IAAIkC,SAAT,EACCjB,OAAO,CAACC,KAAR,CACA,uEACC,gCAFD,EAGC3C,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+B2E,YAA/B,CAHD,EAIC9E,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BuB,QAA/B,CAJD,EAKC;AAACoD,cAAAA,YAAY,EAAZA,YAAD;AAAepD,cAAAA,QAAQ,EAARA,QAAf;AAAyBY,cAAAA,aAAa,EAAbA;AAAzB,aALD;AAODwC,YAAAA,YAAY,GAAG,EAAf;AACA;;AAEDV,UAAAA,cAAc;AACd,cAAM3B,qBAAqB,GAAGH,aAA9B;AACAA,UAAAA,aAAa,IAAI,MAAMb,CAAvB;AAEA6C,UAAAA,OAAO,CAACjD,KAAK,CAACI,CAAD,CAAN,EAAWqD,YAAX,EAAyB/C,QAAzB,aAAyBA,QAAzB,uBAAyBA,QAAQ,CAAGN,CAAH,CAAjC,EAAwCA,CAAxC,EAA2CmC,YAAY,CAACnC,CAAD,CAAvD,EAA4DqC,eAA5D,CAAP;AAEA,cAAI/B,QAAQ,IAAI,CAAC/B,MAAM,CAACkF,IAAP,CAAYnD,QAAZ,EAAsBxB,MAAvC,EACC,OAAOwB,QAAQ,CAACN,CAAD,CAAf;AAEDa,UAAAA,aAAa,GAAGG,qBAAhB;AACA2B,UAAAA,cAAc;AAEd;AACA;;AAED,YAAI,EAAE3C,CAAC,IAAIkC,SAAP,CAAJ,EAAuB;AACvB;;AAEDM,MAAAA,qBAAqB,GAAG,KAAxB;AAEA,UAAIkB,aAAa,GAAG,KAApB;;AAEA,UAAIL,YAAY,YAAY3D,KAA5B,EAAmC;AAClC,YAAI,EAAEO,QAAQ,YAAYP,KAAtB,CAAJ,EAAkC;AACjC,cAAI2C,eAAJ,EACCpB,OAAO,CAAC0C,IAAR,CACC,0EADD,EAECpF,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BuB,QAA/B,CAFD,EAGC;AAACoD,YAAAA,YAAY,EAAZA,YAAD;AAAepD,YAAAA,QAAQ,EAARA,QAAf;AAAyBY,YAAAA,aAAa,EAAbA;AAAzB,WAHD;AAKDZ,UAAAA,QAAQ,GAAGL,KAAK,CAACI,CAAD,CAAL,GAAW,EAAtB;AACA;;AACD,6DAAyBqD,YAAY,CAACtD,OAAb,EAAzB;AAAA;AAAA,cAAY6D,CAAZ;AAAA,cAAehF,KAAf;;AAAiD,cAAIqB,QAAQ,CAAC2D,CAAD,CAAR,KAAgBhF,KAApB,EAA2B;AAC3E8E,YAAAA,aAAa,GAAG,IAAhB;AACAzD,YAAAA,QAAQ,CAAC2D,CAAD,CAAR,GAAchF,KAAd;AACA;AAHD;AAIA,OAdD,MAcO;AACN8E,QAAAA,aAAa,GAAGzD,QAAQ,KAAKoD,YAA7B;AACAzD,QAAAA,KAAK,CAACI,CAAD,CAAL,GAAWqD,YAAX;AACA;;AAED,UAAIK,aAAJ,EAAmB;AAClBjB,QAAAA,WAAW,GAAG,KAAd;AACAF,QAAAA,kBAAkB,CAACnB,IAAnB,OAAAmB,kBAAkB,EAASJ,YAAY,CAACnC,CAAD,CAArB,CAAlB;AACA;AACD;;AAED,IAAe;AAAA;;AACd0B,MAAAA,EAAE,CAACwB,KAAH,4BAAWF,GAAX,IAAiBpD,KAAjB,YAAwBU,QAAxB,GAAwBA,QAAxB,YAAkCiC,kBAAlC,GAAkCA,kBAAlC;AACAb,MAAAA,EAAE,CAAC0B,QAAH;AACA;AACD;AACD,CA7KM;;;;;"}
\No newline at end of file