{"version":3,"sources":["webpack://alkali/webpack/universalModuleDefinition","webpack://alkali/webpack/bootstrap","webpack://alkali/./util/lang.js","webpack://alkali/./Variable.js","webpack://alkali/(webpack)/buildin/global.js","webpack://alkali/./Renderer.js","webpack://alkali/./operators.js","webpack://alkali/./index.js","webpack://alkali/./Element.js","webpack://alkali/./reactive.js","webpack://alkali/./Copy.js","webpack://alkali/./util/ContextualPromise.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","getPrototypeOf","base","__proto__","setPrototypeOf","proto","getOwnPropertyDescriptor","error","hasFeatures","requestAnimationFrame","e","promise","Promise","MutationObserver","WeakMap","has","feature","SyncPromise","this","SyncErrorPromise","unhandledTimeout","setTimeout","console","then","onFulfilled","onRejected","result","catch","handler","finally","clearTimeout","observe","target","listener","addKey","keyFlag","descriptor","currentValue","targetAncestor","set","previousSet","previousGet","remove","timerStarted","setInterval","watchedObjects","length","diff","watchedCopies","listeners","copy","push","queuedListeners","queue","indexOf","lang","nextTurn","forEach","events","properties","unobserve","splice","previous","current","callback","queued","id","toJSONHidden","Hidden","extendClass","constructOrCall","toJSON","eval","possibleConstructOrCall","toRender","processAnimationFrame","renderer","execute","isResolved","resolution","errorResolution","reject","finished","resolve","errback","handle","newError","Set","elements","add","element","Map","map","values","mapProperty","intermediary","when","errorHandler","compose","Base","constructor","div","document","createElement","attributes","setAttribute","assign","source","deepCopy","Array","BaseClass","constructHandler","callHandler","Element","apply","arguments","buggyConstructorSetter","functionConstruct","args","SubClass","instance","isGenerator","func","displayName","isGeneratorIterator","iterator","next","spawn","generator","nextValue","isThrowing","generatorIterator","stepReturn","done","isSync","undefined","global","context","noChange","RequestChange","RequestSet","NOT_MODIFIED","toString","GET_TYPED_ARRAY","getTyped","GET_TYPED_OR_UNTYPED_ARRAY","allowUntyped","GET_VALID_TYPE","ensureValidType","propertyListenersMap","nextVersion","Date","now","listenerId","_propertyChange","propertyName","variable","contextFromCache","Context","subject","notifies","NotifyingContext","UpdateEvent","visited","ReplacedEvent","triggerEvent","PropertyChangeEvent","propertyEvent","parent","SplicedEvent","modifier","items","removed","start","deleteCount","EntryEvent","entryEvent","DeletedEvent","AddedEvent","assignPromise","Variable","with","newContext","executeWithin","executor","previousContext","version","restart","contextualize","parentContext","contextualized","distinctSubject","contextMap","_contextMap","sources","merge","setVersion","isNaN","Error","Math","max","childContext","specify","specifiedInstance","subjectMap","ownedClasses","instanceMap","createInstance","defaultInstance","getContextualized","matches","type","doesAffect","for","valueOf","_logStackTrace","v","stack","split","test","shift","coalesce","_debugOpts","shortStackTrace","some","line","re","log","__debug","replace","stackObject","join","VariablePrototype","allowPromise","gotValue","getValue","isAsyncPromise","currentContext","forChild","versionWithChildren","ifModifiedSince","observer","default","previousNotifyingValue","returnedVariable","stopNotifies","deferredContext","__variable","subscribe","PropertyClass","propertyVariable","_properties","TypeError","Class","isPropertyClass","getForClass","ContextualizedVariable","defaultContext","isWritable","fixed","_isWritable","onPropertyChange","updated","eachKey","Transform","slice","forDependencies","hasNotifyingChild","forPropertyNotifyingValues","hasChildNotifiers","subProperties","init","dependency","listeningToObject","cleanup","handles","updateVersion","dateBasedVersion","getVersion","getFullVersion","getSubject","selectVariable","getUpdates","since","updates","nextUpdateMap","_initUpdate","updateEvent","isDownstream","by","dependent","childEvent","collection","invalidate","updateQueued","event","updateReceiver","unsubscribe","index","put","changeValue","oldValue","deniedPut","copiedFrom","undefine","is","newValue","parentEvent","proxy","proxiedVariable","complete","save","onValue","String","to","transformFunction","reverse","_Transform","as","whileResolving","valueUntilResolved","useLastValue","WhileResolving","validate","schema","required","valid","isValid","structured","structure","keys","existing","observeObject","observerCount","j","el","autoObserveObjects","registerListener","deregisterListener","deliverChanges","getCollectionOf","collectionOf","_sN","_debug","random","newObject","defineProperties","=","_lastUpdated","parentSchemaProperties","validation","Validating","arrayToModify","cachedValue","array","typedArray","newArray","startingIndex","atEnd","spliceArgs","results","concat","untypedItems","item","from","addedCount","arrayPosition","_typedVersion","cachedVersion","Type","NewType","names","getOwnPropertyNames","ExtendedVariable","writable","toType","VArray","of","VString","VNumber","VBoolean","isPrimitive","getDescriptor","warn","getGeneratorDescriptor","defineAs","generalizeMethod","configurable","hasOwn","Target","createForInstance","_defaultInstance","VMap","transform","dontCache","getTransform","readyState","isFinite","staysUpdated","isAsyncInputs","transformContext","argument","argumentName","lastPromiseResult","resolved","remaining","whenArgumentResolved","__index","whenAllResolved","__previousPromiseResult","promiseSafeResult","isPromise","abort","replacedResolutionWith","onResolve","lastError","getArguments","whenStrict","originalValue","setReverse","defaultValue","ContextualTransform","contextualizedVariable","_needsContextualization","Item","content","generic","makeSubVar","varray","sortFunction","_sortedArray","reversed","sort","doSplice","unshift","pop","compareFunction","combined","typed","untyped","a","b","_typedArray","end","idOrValue","includes","delete","instanceOrId","removeIndex","clear","setToArray","ArrayClass","VCollection","GeneratorVariable","resuming","generatorContext","oldSources","newLength","newSources","argsToArray","arg","all","hasTransform","keyMapping","valueArray","resultObject","getGeneralizedDescriptor","method","description","contains","instanceForContext","proxyHandler","deleteProperty","ownKeys","VFunction","VMethod","Number","Boolean","VSet","Proxy","_collectionOf","ItemClass","_collection","Collection","generalize","prototypeNames","Function","returns","wrapsType","returnValue","charAt","codeCharAt","lastIndexOf","match","substr","toUpperCase","toLowerCase","toFixed","toExponential","toPrecision","toLocaleString","_array","sourceContext","reactive","entry","getId","VDate","toDateString","toTimeString","toGMTString","toUTCString","getTime","setTime","VPromise","deny","react","options","delayUpdate","originalUpdated","enqueueUpdate","update","objectUpdated","_changeValue","getNextVersion","IterativeMethod","source1","source2","_mappedItems","wrapped","defineIterativeFunction","definedOn","IterativeResults","iteratee","arg2","filterFunction","filter","toAdd","newItems","toRemove","untypedArray","keyGenerator","valueGenerator","hasKeyFunction","hasValueFunction","hasKey","emit","group","variables","g","devtoolsFormatters","header","config","variableTime","hasBody","request","body","float","VariableExports","invalidatedElements","nextId","Renderer","selector","getElements","alkaliRenderers","updateRendering","shouldRender","renderUpdate","alwaysUpdate","updateOnStart","ElementRenderer","AttributeRenderer","PropertyRenderer","InputPropertyRenderer","tagName","renderSelectValueUpdate","StyleRenderer","ContentRenderer","TextRenderer","position","textNode","ListRenderer","each","onElementRemoval","renderers","invalidated","deferredRender","isCanceled","contextMatches","invalidateElement","invalidatedParts","queueTask","processQueue","updateElement","stop","builtList","omitValueOf","isSameProperty","always","querySelectorAll","thisElement","renderersOnShow","className","addElement","started","generalized","_generalized","rendererIdentifier","renderLoading","removeAttribute","eventualValue","style","innerHTML","appendChild","createTextNode","nodeType","parentNode","replaceChild","childNodes","nodeValue","childElements","removeChild","nextChild","newElement","append","eachItem","insertBefore","defineHasOwn","renderEach","childElement","_item","onShowElement","shownElement","getElementsByClassName","includingTop","onlyChildren","children","getElementsByTagName","child","operatingFunctions","operators","getOperatingFunction","expression","operator","precedence","forward","reverseA","reverseB","output","inputs","firstError","message","operatorHandler","addFlags","infix","Copy","ContextualPromise","main","localGlobal","alkali","canExtendBuiltinElements","SELECTOR_REGEX","definition","styleDefinitions","cssRule","setProperty","construct","Reflect","Constructor","ClassNameRenderer","currentClassName","changingClassName","PropertiesRenderer","newProperties","lastProperties","doc","tag","addEventListener","INPUT","TEXTAREA","testElement","originalConstructor","booleanStyle","defaultStyle","directStyle","styleSheet","display","visibility","color","opacity","zoom","minZoom","maxZoom","fontWeight","textDecoration","presumptiveParentMap","createCssRule","styleSheetElement","head","firstChild","sheet","cssRules","rules","insertRule","layoutChildren","container","prepend","fragment","createDocumentFragment","childNode","ref","isIterable","variableAsContent","currentParent","isContentNode","contentNode","bidirectionalHandler","bindChanges","noop","propertyHandlers","_generators","classes","isArray","flag","class","applyAttribute","role","render","dataset","applySubProperties","styleObjectHandler","From","ownedInstances","setForClass","HTMLElement","_propertyHandlers","elementPropertyHandlers","input","valueAsNumber","valueAsDate","checked","select","textarea","area","button","details","dialog","embed","fieldset","form","frame","frameset","iframe","img","option","optgroup","label","td","th","script","track","link","meta","meter","progress","del","ins","video","keygen","param","SubPropertyRenderer","subKey","subValue","assignProperties","styleDefinition","VariableClass","propertyHandler","buildContent","itemVariable","inputType","inputProperty","date","datetime","time","conversion","buildInputContent","inputEvents","parseFloat","mergeObject","radios","radio","dispatchEvent","Event","classHandlers","shadow","applyToConstructor","applyOnCreate","_applyOnCreate","getApplySet","parentApplySet","disallowClassEventHandlers","renderDescriptor","renderMethod","withProperties","isNativeElement","isNativeClass","makeElementConstructor","defineElement","forTarget","propertyForElement","selectorMatch","_ElementClass","_BaseElementClass","hasArguments","created","ready","ElementApplyOnCreate","customGenerators","styleGenerators","nativeGenerators","generators","assignGenerators","attachShadow","tagSelector","extendElement","nativeTagName","customElements","TestSupport","extends","HTMLDivElement","bindElementClass","uniqueTag","setupElement","startingRenderers","endingRenderers","newIndex","oldIndex","within","elementName","ElementClass","getConstructor","HTMLInputElement","generateInputs","tags","HTMLConstructor","_constructor","props","assigned","handlers","aliases","Anchor","Image","Paragraph","Textarea","DList","UList","OList","ListItem","Text","TextInput","TableRow","TableCell","TableHeaderCell","TableHeader","TableBody","alias","makePreBoundVariable","preBoundProperties","BoundElement","getElementInstances","_cssRule","selectorText","newChildren","elementMap","ThisElementVariable","_Variable","elementOverlay","variableProperties","refresh","moveLiveElementsEnabled","Content","hasInstance","extend","ExtendedElement","lifeStates","nodes","action","detached","needsRestart","attached","firstVisit","node","state","__alkaliAttached__","mutations","il","mutation","jl","nodeIteration","k","kl","baseNode","currentNode","nextNode","nextSibling","childList","subtree","distinctive","generics","getDistinctElement","dashLetter","preserveObjects","_getAsObject","typeMappings","fromValue","isProperty","deferObject","objectVar","propertyValue","defineValueProperty","getType","hasKeys","typedObject","getp","directPropertyValue","prop","cond","consequent","alternate","if","choose","fcall","mcall","ncall","obj","val","cls","definitions","derivativeMap","isDirty","sync","forModification","derivative","getCopyOf","original","onSave","revert","getExecutor","ContextualPromiseFromPromise","startPromises","promises","contextualizedPromises","hasAbort","propagateAbort","assignAbort","originalPromise","contextualPromise","onResolved","isContextual","startedPromises","race"],"mappings":"CAAA,SAAAA,EAAAC,GACA,iBAAAC,SAAA,iBAAAC,OACAA,OAAAD,QAAAD,IACA,mBAAAG,eAAAC,IACAD,OAAA,GAAAH,GACA,iBAAAC,QACAA,QAAA,OAAAD,IAEAD,EAAA,OAAAC,IARA,CASCK,OAAA,WACD,mBCTA,IAAAC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAP,QAGA,IAAAC,EAAAI,EAAAE,GAAA,CACAC,EAAAD,EACAE,GAAA,EACAT,QAAA,IAUA,OANAU,EAAAH,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAQ,GAAA,EAGAR,EAAAD,QA0DA,OArDAM,EAAAM,EAAAF,EAGAJ,EAAAO,EAAAR,EAGAC,EAAAQ,EAAA,SAAAd,EAAAe,EAAAC,GACAV,EAAAW,EAAAjB,EAAAe,IACAG,OAAAC,eAAAnB,EAAAe,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CV,EAAAgB,EAAA,SAAAtB,GACA,oBAAAuB,eAAAC,aACAN,OAAAC,eAAAnB,EAAAuB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAnB,EAAA,cAAiDyB,OAAA,KAQjDnB,EAAAoB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAAnB,EAAAmB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFAxB,EAAAgB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAAnB,EAAAQ,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAvB,EAAA2B,EAAA,SAAAhC,GACA,IAAAe,EAAAf,KAAA2B,WACA,WAA2B,OAAA3B,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAK,EAAAQ,EAAAE,EAAA,IAAAA,GACAA,GAIAV,EAAAW,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD7B,EAAAgC,EAAA,GAIAhC,IAAAiC,EAAA,kDClFA,IAAAC,+BAAAC,6BAAAC,8BAAA3C,gBAGE,WACF,IAAA4C,eAAAzB,OAAAyB,gBAAA,SAAAC,GAAgE,OAAAA,EAAAC,WAChEC,eAAA5B,OAAA4B,gBAAA,SAAAF,EAAAG,GACA,QAAAhB,KAAAgB,EACA,IACAH,EAAAP,eAAAN,KACAgB,EAAAV,eAAAN,GACAb,OAAAC,eAAAyB,EAAAb,EACAb,OAAA8B,yBAAAD,EAAAhB,IAEAa,EAAAb,GAAAgB,EAAAhB,IAGI,MAAAkB,MAGJC,YAAA,CACAC,sBAAA,oBAAAA,sBACAhC,eAAAD,OAAAC,gBAAA,WACA,IAEA,OADAD,OAAAC,eAAA,GAA4B,SAC5B,EACI,MAAAiC,KAJJ,GAOAC,QAAA,oBAAAC,QACAC,iBAAA,oBAAAA,iBACAC,QAAA,mBAAAA,SAEA,SAAAC,IAAAC,GACA,OAAAR,YAAAQ,GAGA,SAAAC,YAAAlC,GACAmC,KAAAnC,QAsBA,SAAAoC,iBAAAZ,GACAW,KAAAnC,MAAAwB,EACAW,KAAAE,iBAAAC,WAAA,WACAC,QAAAf,MAAA,wBAAAA,KAvBAU,YAAAvB,UAAA,CACA6B,KAAA,SAAAC,EAAAC,GACA,IAAAD,EACA,WAAAP,YAAAC,KAAAnC,OAEA,IACA,IAAA2C,EAAAF,EAAAN,KAAAnC,OACA,OAAA2C,KAAAH,KAAAG,EAAA,IAAAT,YAAAS,GACI,MAAAnB,GACJ,WAAAY,iBAAAZ,KAGAoB,MAAA,SAAAC,GACA,OAAAV,KAAAK,KAAA,KAAAK,IAEAC,QAAA,SAAAD,GAEA,OADAA,IACAV,OASAC,iBAAAzB,UAAA,IAAAuB,YACAE,iBAAAzB,UAAA6B,KAAA,SAAAC,EAAAC,GAEA,OADAK,aAAAZ,KAAAE,kBACAK,EAGAR,YAAAvB,UAAA6B,KAAAtD,KAAAiD,KAAAO,GAFA,IAAAN,iBAAAD,KAAAnC,QAOA,IAAAgD,QACAhB,IAAA,kBACA,SAAAiB,EAAAC,GAQA,OAJAA,EAAAC,OAKA,SAAA7C,GACA,IAAA8C,EAAA,MAAA9C,EACA,GAAA6B,KAAAiB,GACA,OAEAjB,KAAAiB,IAAA,EAEA,IAEAC,EAFAC,EAAAL,EAAA3C,GACAiD,EAAAN,EAEA,GACAI,EAAA5D,OAAA8B,yBAAAgC,EAAAjD,UACK+C,IAAAE,EAAArC,eAAAqC,KAEL,GAAAF,KAAAG,IAAA,CACA,IAAAC,EAAAJ,EAAAG,IACAE,EAAAL,EAAAzD,IACAH,OAAAC,eAAAuD,EAAA3C,EAAA,CACAV,IAAA,WACA,OAAA0D,EAAAI,EAAAxE,KAAAiD,OAEAqB,IAAA,SAAAxD,GACAyD,EAAAvE,KAAAiD,KAAAnC,GACAsD,IAAAtD,IACAsD,EAAAtD,EACAkD,GACAA,EAAA,EAAoBD,OAAAd,KAAA7C,KAAAgB,OAIpBX,WAAA0D,EAAA1D,kBAGAF,OAAAC,eAAAuD,EAAA3C,EAAA,CACAV,IAAA,WACA,OAAA0D,GAEAE,IAAA,SAAAxD,GACAsD,IAAAtD,IACAsD,EAAAtD,EACAkD,GACAA,EAAA,EAAoBD,OAAAd,KAAA7C,KAAAgB,OAIpBX,YAAA0D,KAAA1D,cAjDAuD,EAAAS,OAAA,WACAT,EAAA,MAEAA,GAoDA,SAAAD,EAAAC,GACAU,eACAA,cAAA,EACAC,YAAA,WACA,QAAA9E,EAAA,EAAAC,EAAA8E,eAAAC,OAA8ChF,EAAAC,EAAOD,IACrDiF,KAAAC,cAAAlF,GAAA+E,eAAA/E,GAAAmF,UAAAnF,KAEK,KAEL,IAAAoF,EAAA,GACA,QAAApF,KAAAkE,EACAA,EAAArC,eAAA7B,KACAoF,EAAApF,GAAAkE,EAAAlE,IAGA+E,eAAAM,KAAAnB,GACAgB,cAAAG,KAAAD,GACAD,UAAAE,KAAAlB,IAEAmB,gBACA,SAAAC,MAAApB,EAAAzC,EAAAnB,GACA+E,iBACA,IAAAA,gBAAAE,QAAArB,IACAmB,gBAAAD,KAAAlB,IAGAmB,gBAAA,CAAAnB,GACAsB,KAAAC,SAAA,WACAJ,gBAAAK,QAAA,SAAAxB,GACA,IAAAyB,EAAA,GACAzB,EAAA0B,WAAAF,QAAA,SAAAhE,GACAiE,EAAAP,KAAA,CAAmBnB,OAAAC,EAAAzC,OAAAnB,KAAAoB,MAEnBwC,EAAAyB,GACAzB,EAAAzC,OAAA,KACAyC,EAAA0B,WAAA,OAEAP,gBAAA,MACI,IAEJnB,EAAAzC,SACA,IAAAmE,EAAA1B,EAAA0B,aAAA1B,EAAA0B,WAAA,KACA,IAAAA,EAAAL,QAAAjF,IACAsF,EAAAR,KAAA9E,GAGA,IAAAuF,UAAA7C,IAAA,WAAAvC,OAAAoF,UACA,SAAA5B,EAAAC,GACAA,EAAAS,QACAT,EAAAS,SAEA,QAAA5E,EAAA,EAAAC,EAAA8E,eAAAC,OAA4ChF,EAAAC,EAAOD,IACnD,GAAA+E,eAAA/E,KAAAkE,GAAAiB,UAAAnF,KAAAmE,EAIA,OAHAY,eAAAgB,OAAA/F,EAAA,GACAkF,cAAAa,OAAA/F,EAAA,QACAmF,UAAAY,OAAA/F,EAAA,IAKA+E,eAAA,GACAG,cAAA,GACAC,UAAA,GACAN,cAAA,EACA,SAAAI,KAAAe,EAAAC,EAAAC,GAEA,IAAAC,EACA,QAAAnG,KAAAgG,EACAA,EAAAnE,eAAA7B,IAAAgG,EAAAhG,KAAAiG,EAAAjG,KAEAgG,EAAAhG,GAAAiG,EAAAjG,GACAmG,MAAA,KAAAd,KAAA,CAAoC9E,KAAAP,KAGpC,QAAAA,KAAAiG,EACAA,EAAApE,eAAA7B,KAAAgG,EAAAnE,eAAA7B,KAEAgG,EAAAhG,GAAAiG,EAAAjG,GACAmG,MAAA,KAAAd,KAAA,CAAoC9E,KAAAP,KAGpCmG,GACAD,EAAAC,GAIA,IAAAC,GAAA,EAGA,SAAAC,eACA,OAAAA,aAGA,IAAAC,OAAA,aAIAC,YAAAC,gBAFAF,OAAA1E,UAAA6E,OAAAJ,aAGA,IAEAE,YAAAG,KAAA,iFACA,IAAAC,wBAAAD,KAAA,ueAEA,IAAAC,wBAAA,aAA4C,eAC5CH,gBAAAG,wBACE,MAAA/D,IAGF,IAAA6C,KAAA,CACA9C,sBAAAM,IAAA,yBAAAN,sBACA,WACA,IAAAiE,EAAA,GACAT,GAAA,EACA,SAAAU,IACA,QAAA7G,EAAA,EAAoBA,EAAA4G,EAAA5B,OAAqBhF,IACzC4G,EAAA5G,KAEA4G,EAAA,GACAT,GAAA,EASA,OAPA,SAAAW,GACAX,IACA5C,WAAAsD,GACAV,GAAA,GAEAS,EAAAvB,KAAAyB,IAfA,GAmBA3D,wBACAE,kCACAP,QAAAG,IAAA,WAAAH,QAAA,WA2DA,OA1DA,SAAAA,EAAAiE,GACA,IAAAC,EAAAC,EAAAC,EACA3B,EAAA,EAWA,SAAA4B,EAAA1E,GAEAyE,EAAAzE,EACA2E,IAGA,SAAAA,IACAJ,GAAA,EACA,QAAAhH,EAAA,EAAAC,EAAAsF,EAAAP,OAAqChF,EAAAC,EAAOD,IAC5CuF,EAAAvF,KAGAuF,EAAA,EAEA,OATAwB,EAfA,SAAAM,EAAApG,GAEAA,KAAAwC,KAEAxC,EAAAwC,KAAA4D,EAAAF,IAEAF,EAAAhG,EACAmG,MAQAD,GASA,CACA1D,KAAA,SAAAyC,EAAAoB,GACA,WAAAxE,EAAA,SAAAuE,EAAAF,GACA,SAAAI,IAEA,IACAL,IAAAI,EAEAH,EAAAD,GAGAG,EAAAH,EACAI,EAAAJ,GACAhB,EACAA,EAAAe,MAES,MAAAO,GAETL,EAAAK,IAGAR,EAEAO,KAEAhC,MAAA,KAAAF,KAAAkC,QArDA,GA6DAE,IAAA,oBAAAA,IACA,IAAAA,IAAA,OAAAzC,OAAAyC,IACA,SAAAC,GACA,IAAAjD,EAAA,IAAAgD,IACA,GAAAC,EACA,QAAA1H,EAAA,EAAoBA,EAAA0H,EAAA1C,OAAqBhF,IACzCyE,EAAAkD,IAAAD,EAAA1H,IAGA,OAAAyE,GAEA,SAAAiD,GAEA,OADAA,KAAA,GACA,CACAC,IAAA,SAAAC,GACAxE,KAAAH,IAAA2E,IACAF,EAAArC,KAAAuC,IAGA3E,IAAA,SAAA2E,GACA,OAAAF,EAAAlC,QAAAoC,IAAA,KAIAC,IAAA,oBAAAA,QAAA,WACA,IAAAC,EAAApH,OAAAY,OAAA,MACA,OACAmD,IAAA,SAAAlD,EAAAN,GACA6G,EAAAvG,GAAAN,GAEAgC,IAAA,SAAA2E,GACA,OAAAlH,OAAAkB,UAAAC,eAAA1B,KAAA2H,EAAAvG,MAEAV,IAAA,SAAAU,GACA,OAAAuG,EAAAvG,MAIAyB,QAAAC,IAAA,WAAAD,QACA,SAAA+E,EAAAxH,GACA,IAAAyH,EAAA,MAAAzH,GAAA,IAAA6F,KACA,OAAAnD,IAAA,kBACA,CACApC,IAAA,SAAAU,GACA,OAAAA,EAAAyG,IAEAvD,IAAA,SAAAlD,EAAAN,GACAP,OAAAC,eAAAY,EAAAyG,EAAA,CACA/G,QACAL,YAAA,MAIA,CACAC,IAAA,SAAAU,GACA,IAAA0G,EAAA1G,EAAAyG,GACA,OAAAC,KAAAhH,OAEAwD,IAAA,SAAAlD,EAAAN,IAEAM,EAAAyG,KAAAzG,EAAAyG,GAAA,IAAA1B,SACArF,WAKAgD,gBACA6B,oBACAS,wBACA2B,KAAA,SAAAjH,EAAAiF,EAAAiC,GACA,OAAAlH,KAAAwC,KACAxC,EAAAwC,KAAAyC,EAAAiC,IAAAlH,EAAAiF,EAAAjF,IAEAmH,QAAA,SAAAC,EAAAC,EAAAzC,GACA,IAAAjE,EAAA0G,EAAA1G,UAAAlB,OAAAY,OAAA+G,EAAAzG,WAEA,QAAA5B,KADAsC,eAAAgG,EAAAD,GACAxC,EACAjE,EAAA5B,GAAA6F,EAAA7F,GAGA,OADA4B,EAAA0G,cACAA,GAEAhG,8BACAoD,SAAAzC,IAAA,oBACA,SAAAiD,GAIA,IAAAqC,EAAAC,SAAAC,cAAA,OACA,IAAA1F,iBAAAmD,GACAjC,QAAAsE,EAAA,CACAG,YAAA,IAEAH,EAAAI,aAAA,IAAAvC,OAEA,SAAAF,GAEA3C,WAAA2C,EAAA,IAEAd,KAAA1E,OAAAkI,QAAA,SAAA1E,EAAA2E,GACA,QAAA7I,KAAA6I,EACA3E,EAAAlE,GAAA6I,EAAA7I,GAEA,OAAAkE,GAEA4E,SAAA,SAAAD,GACA,GAAAA,GAAA,iBAAAA,EAAA,CACA,GAAAA,aAAAE,MAEA,IADA,IAAA7E,EAAA,GACAlE,EAAA,EAAAC,EAAA4I,EAAA7D,OAAsChF,EAAAC,EAAOD,IAC7CkE,EAAAlE,GAAAyF,KAAAqD,SAAAD,EAAA7I,QAEK,CACLkE,EAAA,GACA,QAAAlE,KAAA6I,EACA3E,EAAAlE,GAAAyF,KAAAqD,SAAAD,EAAA7I,IAGA,OAAAkE,EAEA,OAAA2E,GAEArC,iCAAA,SAAAwC,EAAAC,EAAAC,GACA,gBAAAC,IACA,GAAA/F,gBAAA+F,EAAA,CACA,GAAA/F,KAAAvB,eAAA,gBAAAsH,EAAAvH,YAAAO,eAAAiB,OAUM,GAAA6F,EACN,OAAAA,EAAAG,MAAAhG,KAAAkF,YAAAe,eAXA,CACA,GAAAJ,EACA,OAAAA,EAAAG,MAAAD,EAAAE,WAEA5D,KAAA6D,uBAEA5I,OAAAC,eAAAyC,KAAA,eAAmDnC,MAAAkI,IAEnD/F,KAAAkF,YAAAa,EAKA,OAAAH,EAAAI,MAAAhG,KAAAiG,WAEA,OAAAH,EAAAE,MAAAD,EAAAE,aAIAE,kBAAA,SAAAP,EAAAQ,EAAAC,EAAAC,GAUA,OATAA,EAAA7H,eAAA,gBAAA4H,EAAA7H,YAAAlB,OAAAyB,eAAAuH,KACAA,EAAAhJ,OAAAY,OAAAmI,EAAA7H,WACA6D,KAAA6D,uBAEA5I,OAAAC,eAAA+I,EAAA,eAAqDzI,MAAAwI,IAErDC,EAAApB,YAAAmB,GAGAT,EAAAI,MAAAM,EAAAF,KAGA,SAAAG,YAAAC,GACA,sBAAAA,EAAA,CACA,IAAAtB,EAAAsB,EAAAtB,YAEA,6BAAAA,EAAAuB,aAAAvB,EAAA/H,OAGA,SAAAuJ,oBAAAC,GACA,GAAAA,KAAAC,KAAA,CACA,IAAA1B,EAAAyB,EAAAzB,wBACA,6BAAAA,EAAAuB,aAAAvB,EAAA/H,OAKA,SAAA0J,MAAAC,GACA,IAEAC,EACAC,EAHAC,EAAA,mBAAAH,QAIA,OACA,SAAAF,IACA,QACA,IAAAM,EAAAD,EAAAD,EAAA,gBAAAD,GACA,GAAAG,EAAAC,KACA,OAAAD,EAAArJ,MAEAkJ,EAAAG,EAAArJ,MACA,IAKA,GAHAkJ,KAAAH,MAAAF,oBAAAK,KACAA,EAAAF,MAAAE,IAEAA,KAAA1G,KAAA,CAGA,IACA+G,EAAA,KACA5G,EAAAuG,EAAA1G,KAAA,SAAAxC,GAGA,GAFAkJ,EAAAlJ,EACAmJ,GAAA,GACA,IAAAI,EACA,OAAAR,IAEAQ,GAAA,GAEO,SAAA/H,GAGP,OAFA0H,EAAA1H,EACA2H,GAAA,EACAJ,MAEA,IAAAQ,EAEA,OADAA,GAAA,EACA5G,EAGAwG,GAAA,EACK,MAAA3H,GACL2H,GAAA,EACAD,EAAA1H,IAvCAuH,GA6CA,OApDAvE,KAAAkE,wBAmDAlE,KAAAwE,YACAxE,MAviBCxD,6BAAO,QAAWwI,KAAAvI,8BAAA,mBAATF,+BAAA,SAASA,+BAAAoH,MAAA5J,QAAAyC,8BAAAD,kCAAAvC,OAAAD,QAAA0C,iDCDnB,SAAAwI,GAAA,IAAA1I,EAAAC,EAAAC,EACCD,EAAO,CAACnC,EAAA,SAAuB2K,KAAAvI,EAAA,mBAATF,EAErB,SAAAyD,GACF,IAEAkF,EAOAF,EARAG,EAAA,GAEA5H,EAAAyC,EAAAzC,QACA6E,EAAApC,EAAAoC,IACAJ,EAAAhC,EAAAgC,IACAnF,EAAAmD,EAAAnD,eACAH,EAAAzB,OAAAyB,gBAAA,SAAAC,GAAgE,OAAAA,EAAAC,WAChEsH,EAAAlE,EAAAkE,YAGAkB,EAAA,EACAC,EAAA,EACAC,EAAA,CACAxK,KAAA,eACAyK,SAAA,WACA,2CAGAC,EAAA,CACAC,UAAA,GAEAC,EAAA,CACAD,UAAA,EACAE,cAAA,GAEAC,EAAA,CACAC,iBAAA,GAGAC,EAAA,IAAA9F,EAAAzC,QAAA,6BAEAwI,GADA,IAAA/F,EAAAzC,QACAyI,KAAAC,OAQAC,GANAlG,EAAA2C,QAAApF,EAAA,aACE,CACF4I,gBAAA,SAAAC,GACAzI,KAAA0I,SAAAF,gBAAAC,EAAAE,iBAAA3I,UAGA,GAEA,SAAA8E,EAAAjH,EAAAiF,EAAAoB,GACA,OAAArG,KAAAwC,KACAxC,EAAAwC,KAAAyC,EAAAoB,GAEApB,EAAAjF,GASA,SAAA+K,EAAAC,EAAAC,GACA9I,KAAA6I,UACAC,IACA9I,KAAA8I,YAmHA,SAAAC,EAAAhI,EAAA8H,GACA7I,KAAA6I,UACA7I,KAAAe,WAoCA,SAAAiI,IACAhJ,KAAAiJ,QAAA,IAAA5E,EAIA,SAAA6E,EAAAC,GACAnJ,KAAAiJ,QAAAE,IAAAF,QAAA,IAAA5E,EAIA,SAAA+E,EAAAjL,EAAAkL,EAAAC,GACAtJ,KAAA7B,MACA6B,KAAAqJ,gBACArJ,KAAAsJ,SACAtJ,KAAAiJ,QAAAI,EAAAJ,QAIA,SAAAM,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GACA5J,KAAAiJ,QAAA,IAAA5E,EACArE,KAAAwJ,WACAxJ,KAAAyJ,QACAzJ,KAAA0J,UACA1J,KAAA2J,QACA3J,KAAA4J,cAGA,SAAAC,EAAA1L,EAAAN,EAAAiM,GACA9J,KAAA8J,aACA9J,KAAAiJ,QAAAa,EAAAb,QACAjJ,KAAA7B,MACA6B,KAAAnC,QAOA,SAAAkM,EAAA5L,EAAAN,GACAmC,KAAA7B,MACA6B,KAAAnC,QACAmC,KAAAiJ,QAAA,IAAA5E,EAIA,SAAA2F,EAAA7L,EAAAN,GACAmC,KAAA7B,MACA6B,KAAAnC,QACAmC,KAAAiJ,QAAA,IAAA5E,EA2BA,SAAA4F,EAAAvB,EAAAjJ,EAAAqD,GACA,IAAAsE,EAkCA,OAjCA3H,EAAAY,KAAA,SAAAxC,GACA,QAAAuJ,EAEAA,GAAA,MACI,IAAAsB,EAAAjJ,YAKJ,OAHAiJ,EAAAjJ,QAAA,KAKAqD,EACAA,EAAAjF,GAEA6K,EAAA7K,SAEG,SAAAwB,GACH,QAAA+H,EAEAA,GAAA,MACI,IAAAsB,EAAAjJ,YAKJ,OAHAiJ,EAAAjJ,QAAA,KAKAiJ,EAAArJ,UAEA+H,IACAA,GAAA,EACAsB,EAAAjJ,WAEAA,EAGA,SAAAyK,EAAArM,GACA,KAAAmC,gBAAAkK,GAUA,OAAAA,EAAAC,KAAAtM,GARAA,IAAAwJ,IACAxJ,KAAAwC,OAAAxC,EAAAiL,SACAmB,EAAAjK,KAAAnC,GAEAmC,KAAAnC,SA9QA+K,EAAApK,UAAA,CACA0G,YAAA0D,EACAwB,WAAA,SAAA1B,GACA,WAAA1I,KAAAkF,YAAAlF,KAAA6I,QAAA7I,KAAA8I,WAEAuB,cAAA,SAAAC,GACA,IAAAC,EAAAhD,EACA,IAEA,OADAA,EAAAvH,KACAsK,IACI,QACJ/C,EAAAgD,IAIAC,QAAA,EACAC,QAAA,aAGAC,cAAA,SAAAhC,EAAAiC,GAGA,IAAAC,EACA,GAAA5K,KAAA6K,gBAAA,CACA,IAAAC,EAAApC,EAAAqC,cAAArC,EAAAqC,YAAA,IAAA1I,EAAAzC,SAEA,KADAgL,EAAAE,EAAArN,IAAAuC,KAAA6K,kBACA,CACAC,EAAAzJ,IAAArB,KAAA6K,gBAAAD,EAAAtN,OAAAY,OAAAwK,IACAkC,EAAA7I,WAAA,EACA6I,EAAArD,QAAAvH,KAEA,IADA,IAAAgL,EAAAhL,KAAAgL,QACApO,EAAA,EAAAC,EAAAmO,EAAApJ,OAAwChF,EAAAC,EAAOD,IAC/CgO,EAAAI,EAAApO,IAAAoO,IAAApO,GAGAoD,KAAA4K,iBAEAD,GACAA,EAAAM,MAAAjL,WAGA4K,EAAAlC,EAKA,OAAAkC,GAEAM,WAAA,SAAAV,GAgBA,GAAAW,MAAAX,GACA,UAAAY,MAAA,eAEA,OAAApL,KAAAwK,QAAAa,KAAAC,IAAAtL,KAAAwK,YAEAS,MAAA,SAAAM,GACAvL,KAAA6K,kBACA7K,KAAA6K,gBAAAU,EAAAV,kBAGAW,QAAA,SAAAtB,GAEA,IAEAuB,EAFA5C,EAAA7I,KAAA6I,QACA6C,EAAA7C,EAAA3D,YAAAyG,aAEA,GAAAD,EAAA,CACA1L,KAAA6K,kBACA7K,KAAA6K,gBAAAhC,GAEA,IAAA+C,EAAAF,EAAAjO,IAAAyM,GACA,GAAA0B,EAKA,OAJAH,EAAAG,EAAAnO,IAAAoL,KAEA+C,EAAAvK,IAAAwH,EAAA4C,EAAAG,EAAAC,eAAAD,EAAAC,eAAAhD,GAAA,IAAAqB,GAEAuB,EAIA,OAAAvB,EAAA4B,iBAEAC,kBAAA,SAAArD,GACA,IAAA1I,KAAA6I,QAEA,OAAAH,EAGA,IAAApC,EAAAoC,EAAAqC,aAAA/K,KAAA6I,SAAAH,EAAAqC,YAAAtN,IAAAuC,KAAA6I,SACA,OAAAvC,KAAAiB,SAAAjB,EAAAiB,QAAAyE,QAAAhM,MACAsG,OADA,GAIA0F,QAAA,SAAAzE,GAEA,OAAAA,EAAAsB,UAAA7I,KAAA6I,UAQAE,EAAAvK,UAAAlB,OAAAY,OAAA0K,EAAApK,WACAuK,EAAAvK,UAAA0G,YAAA6D,EAoCAC,EAAAxK,UAAAyN,KAAA,WAKA/C,EAAA1K,UAAAyN,KAAA,WAQA7C,EAAA5K,UAAAyN,KAAA,WAUA1C,EAAA/K,UAAAyN,KAAA,UAOApC,EAAArL,UAAAyN,KAAA,QACApC,EAAArL,UAAA0N,WAAA,SAAArD,GACA,OAAA7I,KAAAnC,MAAAqH,YAAAiH,IAAAtD,GAAA7F,GAAAoJ,WAAApM,KAAAnC,MAAAmF,GAAAoJ,WAQArC,EAAAvL,UAAAyN,KAAA,UAOAjC,EAAAxL,UAAAyN,KAAA,QACAjC,EAAAxL,UAAA0N,WAAA,WACA,UA4EAhC,EAAAmC,eAAA,SAAAC,GACA,IAAAC,IAAA,IAAAnB,OAAAmB,OAAA,IAAAC,MAAA,WACAD,EAAA,gBAAAE,KAAAF,EAAA,KAAAA,EAAAG,QACAH,EAAA,qBAAAE,KAAAF,EAAA,KAAAA,EAAAG,QACA,IAAAC,EAAA3M,KAAA4M,YAAA5M,KAAA4M,WAAAD,UAAA,GACA,GAAA3M,KAAA4M,YAAA5M,KAAA4M,WAAAC,gBAGAN,EAAAO,KAAA,SAAAC,GACAJ,EAAAG,KAAA,SAAAE,GACA,OAAAA,KAAAP,KAAAM,OAEAA,EAAAR,EAAA,MAGAnM,QAAA6M,IAAA,YAAAX,EAAAY,QAAA,WAAAH,KAAAI,QAAA,gBACG,CACH,GAAAR,EAAA/K,OAAA,CAGA,IAFA,IACAoL,EADArO,EAAA,GAEA/B,EAAA,EAAmBA,EAAA2P,EAAA3K,OAAkBhF,IAAA,CACrC,IAAAmQ,EAAAR,EAAA3P,GACA,GAAAoQ,EAAA,CACA,GAAAA,EAAAP,KAAAM,GAAA,SACAC,EAAA,KAGAL,EAAAG,KAAA,SAAAE,GACA,OAAAA,OAAAP,KAAAM,KAEAA,IAAAI,QAAA,WACAH,GACArO,EAAAsD,KAAA,IAAA+K,EAAA7P,KAAA,KAAA4P,GACAC,QAEArO,EAAAsD,KAAA8K,GAGAR,EAAA5N,EAEA,IAAAyO,EAAApN,KAAA4M,YAAA5M,KAAA4M,WAAAQ,YACAA,EACAhN,QAAA6M,IAAA,YAAAX,EAAAY,QAAA,WAAAX,GAEAnM,QAAA6M,IAAA,YAAAX,EAAAY,QAAA,eAAAX,EAAAc,KAAA,WAKAnD,EAAA0C,WAAA,CACAD,SAAA,EAAcxP,KAAA,SAAA6P,GAAA,cAAmC,CAAG7P,KAAA,UAAA6P,GAAA,gDACpDI,aAAA,GAGA,IAAAE,EAAApD,EAAA1L,UAAA,CAEA0G,YAAAgF,EACAkC,QAAA,SAAAmB,GACA,IAAA/M,EAAAR,KAAAwN,SAAAxN,KAAAyN,YACA,OAAAF,GAAA/M,KAAAH,KAAAgH,EAAA7G,GAEAH,KAAA,SAAAC,EAAAC,GACA,IAAAC,EAAAkN,EACA,IACAlN,EAAAR,KAAAoM,SAAA,IACAsB,EAAAlN,KAAAH,QAEAG,EAAA,IAAA6B,EAAAtC,YAAAS,IAEI,MAAAnB,GACJmB,EAAA,IAAA6B,EAAApC,iBAAAZ,GAEA,GAAAiB,GAAAC,EAAA,CACA,GAAAmN,GAAAnG,EAAA,CAEA,IAAAoG,EAAApG,EACA,OAAA/G,EAAAH,KAAAC,GAAA,SAAAE,GACA,OAAAmN,EAAAtD,cAAA,WACA,OAAA/J,EAAAE,MAEMD,GAAA,SAAAlB,GACN,OAAAsO,EAAAtD,cAAA,WACA,OAAA9J,EAAAlB,OAIA,OAAAmB,EAAAH,KAAAC,EAAAC,GAEA,OAAAC,GAEAiN,SAAA,SAAAG,GACArG,GACAA,EAAA2D,WAAA0C,EAAA5N,KAAAwK,QAAAa,KAAAC,IAAAtL,KAAAwK,SAAA,EAAAxK,KAAA6N,qBAAA,IAEA,IACAvE,EADAnL,EAAA6B,KAAA7B,IAEA,SAAAA,GAAA,OAAAmL,EAAAtJ,KAAAsJ,QAAA,CASA,IACAhL,EASA,GAlBAiJ,GACA,MAAAA,EAAAuG,kBAIAvG,EAAAuG,gBAAAzG,IASA/I,EAJAgL,EAAAmE,SAIAnE,EAAAmE,UAAA,GAEAnE,EAAAzL,QAEAS,EAAA+B,OAAA/B,EAAAwK,SACA,OAAAhE,EAAAxG,EAAA,SAAAA,GACA,IAAAT,EAAA,MAAAS,EAAA+I,EACA,mBAAA/I,EAAAC,SAAAD,EAAAC,SAAAJ,GACA,mBAAAG,EAAAb,IAAAa,EAAAb,IAAAU,GAAAG,EAAAH,GAEA4D,EAAAoG,EAAA1K,IAAAa,GAKA,OAJAyD,KAAAgM,UAAAhM,EAAAgM,SAAA/M,QACAe,EAAAgM,SAAA/M,OAAA7C,GAGAN,IAGA,IAAAA,EAAA,MAAAS,EAAA+I,EACA,mBAAA/I,EAAAC,SAAAD,EAAAC,SAAAJ,GACA,mBAAAG,EAAAb,IAAAa,EAAAb,IAAAU,GAAAG,EAAAH,GAEA4D,EAAAoG,EAAA1K,IAAAa,GAKA,OAJAyD,KAAAgM,UAAAhM,EAAAgM,SAAA/M,QACAe,EAAAgM,SAAA/M,OAAA7C,GAGAN,EAEA,GAAAmC,KAAAP,QACA,OAAAO,KAAAP,QAEA,IAAA5B,EAAAmC,KAAAnC,MACA,OAAAA,IAAAwJ,EACArH,KAAAnC,MAAAmC,KAAAgO,SAEAR,SAAA,SAAA3P,GACA,IAAAoQ,EAAAjO,KAAAkO,iBACAxF,EAAA1I,KACA,GAAAiO,EAAA,CACA,GAAApQ,IAAAoQ,EAIA,OAFA1G,KAAAuG,gBAAA,IACAvG,EAAAuG,gBAAAzG,GACAxJ,EAAAuO,SAAA,GAIA1D,EAAA3G,WACAkM,EAAAE,aAAAzF,GAEAA,EAAAwF,iBAAA,KAWA,GATArQ,KAAAiL,WACAJ,EAAAwF,iBAAArQ,EACA6K,EAAA3G,WACAlE,EAAAiL,SAAAJ,GAEAnB,KAAAuG,gBAAA,IACAvG,EAAAuG,gBAAAzG,GACAxJ,IAAAuO,SAAA,IAEAvO,KAAAwC,KAAA,CACA,IAAA+N,EAAA7G,EACA,OAAA1J,EAAAwC,KAAA,SAAAxC,GACA,OAAAA,IACAA,EAAAwQ,aACAxQ,IAAAwQ,YAEAxQ,EAAAyQ,WACAF,EACAA,EAAA/D,cAAA,WACA,OAAAH,EAAA1L,UAAAgP,SAAAzQ,KAAA2L,EAAA7K,KAGAqM,EAAA1L,UAAAgP,SAAAzQ,KAAA2L,EAAA7K,GAIAA,IAGA,OAAAA,GAEA0Q,cAAArE,EACA3L,SAAA,SAAAJ,EAAAoQ,GACA,IAAAC,EAAAxO,KAAA7B,GAIA,GAHAqQ,KAAA1F,WACA0F,EAAAxO,KAAAyO,aAAAzO,KAAAyO,YAAAtQ,IAEAqQ,GAiBI,GAAAD,KACJC,aAAAD,GACA,UAAAG,UAAA,yEAnBA,CAEA,IAAAC,EAAAJ,EACAI,GAEA,mBADAA,EAAA3O,KAAAkF,YAAA/G,KACAwQ,EAAAC,kBACAD,EAAA3O,KAAAuO,gBAGAC,EAAA,IAAAG,GACAxQ,MACAqQ,EAAAlF,OAAAtJ,KACAA,KAAA7B,KAAAkJ,EACArH,KAAA7B,GAAAqQ,GAEAxO,KAAAyO,cAAAzO,KAAAyO,YAAA,KAAgDtQ,GAAAqQ,EAOhD,OAAAA,GAEArC,IAAA,SAAAtD,GAKA,OAJAA,KAAA/H,SAAA+H,EAAA3D,YAAA2J,cAEAhG,IAAA/H,QAEAd,KAAAsJ,OACAtJ,KAAAsJ,OAAA6C,IAAAtD,GAAAtK,SAAAyB,KAAA7B,KAEA,IAAA2Q,EAAA9O,KAAA6I,GAAAkG,IAEAC,iBACA,OAAAhP,KAAAiP,OAAAjP,KAAAnC,OAAAmC,KAAAnC,MAAAmR,WAAAhP,KAAAkP,aAEAF,kBACAhP,KAAAkP,YAAAF,GAEAE,aAAA,EACA1G,gBAAA,SAAAC,EAAAnK,EAAA2N,GACAjM,KAAAmP,kBACAnP,KAAAmP,iBAAA1G,EAAAnK,GAEA0B,KAAAoP,QAAA,IAAAhG,EAAAX,EAAA,IAAAS,EAAAlJ,QAEAqP,QAAA,SAAAvM,GACA,QAAAlG,KAAAoD,KAAAyO,YACA3L,EAAAlG,GAEA,QAAAA,KAAAoD,KACA,GAAAA,KAAAvB,eAAA7B,GAAA,CACA,IAAAiB,EAAAmC,KAAApD,GACAiB,KAAAyL,QAAAtJ,MAAAnC,EAAAkE,WACAe,EAAAlG,KAKAoJ,MAAA,SAAAM,EAAAF,GACA,WAAAkJ,EAAAlJ,EAAA,GAAApG,KAAAoG,IAEArJ,KAAA,SAAAuJ,GACA,OAAAtG,KAAAgG,MAAAM,EAAAX,MAAAnH,UAAA+Q,MAAAxS,KAAAkJ,UAAA,KAEAuJ,gBAAA,SAAA1M,GACA9C,KAAAkO,kBACApL,EAAA9C,KAAAkO,kBAEAlO,KAAAyP,mBAxVA,SAAAC,EAAAhH,EAAAjG,EAAAK,GAIA,QAAA3E,KAHAuK,IAAAjG,GACAiN,EAAAhH,IAAA+F,YAAA3L,GAEAL,EAAA,CACA,IAAAlE,EAAAkE,EAAAtE,GACA,GAAAI,KAAA+K,QAAAZ,IACAnK,EAAA2P,kBACApL,EAAAvE,EAAA2P,kBAEA3P,EAAAoR,mBAAA,CACA,IAAAC,EAAArR,EAAAkQ,YACAmB,GACAF,EAAAnR,IAAAuE,KA4UA4M,CAAA1P,UAAA8C,GAEA9C,KAAAsJ,QACAxG,EAAA9C,KAAAsJ,SAGAuG,KAAA,WACA,IAAAnH,EAAA1I,KACAgL,EAAA,GAqBA,OApBAhL,KAAAwP,gBAAA,SAAAM,GACA,IAAAlF,EAAAkF,EAAAhH,SAAAJ,GAIAsC,EAAA/I,KAAA2I,KAUA,OAAA5K,KAAA+P,mBAGA/P,KAAAoM,UAEApM,MAEAgQ,QAAA,WACAhQ,KAAA+B,WAAA,EACA,IAAAkO,EAAAjQ,KAAAiQ,QACA,GAAAA,EACA,QAAArT,EAAA,EAAmBA,EAAAqT,EAAArO,OAAoBhF,IACvCqT,EAAArT,GAAA4E,SAGAxB,KAAAiQ,QAAA,KACAjQ,KAAAkO,iBAAA,IACAxF,EAAA1I,KACAA,KAAAwP,gBAAA,SAAAM,GACAA,EAAA3B,aAAAzF,MAIA8B,QAAA,EACAqD,oBAAA,EAEAqC,cAAA,SAAA1F,GACA,IAAA2F,EAAA,KAAA9H,KAAAC,MAAA,OACA6H,EAAA/H,IACAA,EAAA+H,GAEAnQ,KAAAwK,QAAApC,KAGAgI,WAAA,WACA,OAAA/E,KAAAC,IAAAtL,KAAAwK,QACAxK,KAAAkO,kBAAAlO,KAAAkO,iBAAAkC,WAAApQ,KAAAkO,iBAAAmC,eAAA9I,GAAA,EACAvH,KAAAsJ,OAAAtJ,KAAAsJ,OAAA8G,WAAA7I,GAAA,IAEA8I,eAAA,WACA,OAAAhF,KAAAC,IAAAtL,KAAA6N,oBAAA7N,KAAAoQ,eAGAE,WAAA,SAAAC,GACA,OAAAvQ,KAAA6I,SAGA2H,WAAA,SAAAC,GACA,IAAAC,EAAA,GACAC,EAAA3Q,KAAA2Q,cACA,GAAAA,GAAAF,EACA,KAAAA,EAAAE,EAAAlT,IAAAgT,IACA,aAAAA,EAAAxE,OAEAyE,EAAA,IAEAA,EAAAzO,KAAAwO,GAGA,OAAAC,GAGAE,YAAA,SAAAC,EAAAC,GACA,IAAAD,EAAArG,QAAA,CACA,IAAA2F,EAAA,KAAA9H,KAAAC,MAAA,OACA6H,EAAA/H,IACAA,EAAA+H,GAEAU,EAAArG,QAAApC,IAOA,OALAyI,aAAAzH,EACApJ,KAAA6N,oBAAAgD,EAAArG,QACIsG,IACJ9Q,KAAAwK,QAAAqG,EAAArG,SAEAqG,GAGAzB,QAAA,SAAAyB,EAAAE,EAAAD,GAKA,GAJAD,KACAA,EAAA,IAAA3H,GACAzD,OAAAzF,MAEA6Q,EAAA5H,QAAApJ,IAAAG,MAEA,OAAA6Q,EAEAA,EAAA5H,QAAA1E,IAAAvE,MACAA,KAAAkN,SAEAhD,EAAAmC,eAAArM,MAmBAA,KAAA4Q,YAAAC,EAAAC,GACA,IAAA/O,EAAA/B,KAAA+B,UACA,GAAAA,EAAA,CACA,IAAA2G,EAAA1I,KAEA+B,IAAAwN,QACA,QAAA3S,EAAA,EAAAC,EAAAkF,EAAAH,OAAyChF,EAAAC,EAAOD,IAAA,CAChD,IAAAoU,EAAAjP,EAAAnF,GACA,IAAAoU,EAAA1H,QAAAuH,aAAA3H,EAUA8H,EAAA5B,QAAAyB,EAAAnI,GAAA,QATA,GAAAmI,aAAAzH,EACA4H,EAAA7S,MAAA0S,EAAA1S,KACA6S,EAAA5B,QAAAyB,EAAAxH,cAAAX,OAEO,CACP,IAAAuI,EAAA,IAAA/H,EAAA2H,GACAG,EAAA5B,QAAA6B,EAAAvI,GAAA,KAOA,GAAAmI,aAAAzH,GAAAyH,aAAA3H,EAAA,CACAlJ,KAAAkO,kBAAAlO,KAAAiP,OACAjP,KAAAkO,iBAAAkB,QAAAyB,EAAA7Q,MAEA,IAAA2O,EAAA3O,KAAAkF,YACAwD,EAAA1I,KACA2O,EAAAuC,YACAvC,EAAAuC,WAAA9B,QAAA,IAAAvF,EAAA7J,KAAAgD,GAAAhD,KAAA6Q,IASA,OANA7Q,KAAAsJ,QACAtJ,KAAAsJ,OAAA8F,QAAA,IAAAhG,EAAApJ,KAAA7B,IAAA0S,EAAA7Q,KAAAsJ,QAAAtJ,MAEAA,KAAAkR,YACAlR,KAAAkR,WAAA9B,QAAAyB,EAAA7Q,MAEA6Q,GAGAM,WAAA,WAEAnR,KAAAoP,WAGAtG,SAAA,SAAAhI,GAEA,IAAAA,EACA,UAAAsK,MAAA,yCAEA,IAAArJ,EAAA/B,KAAA+B,UACA,IAAAA,IAAA/B,KAAAvB,eAAA,cACA,IAAAiK,EAAA1I,KAAA6P,OAEA,OADAnH,EAAA3G,YAAA,CAAAjB,GACA4H,EAIA,OAHI,IAAA3G,EAAAK,QAAAtB,IACJiB,EAAAE,KAAAnB,GAEAd,MAEAsO,UAAA,SAAAvN,GAEA,IAAAqO,EACAgC,EACA1I,EAAA1I,KAEA,sBAAAe,EAAA,CAEA,IAAA2H,EAAA1I,KACAqR,EAAA,CACAxT,MAAA,WACA,WAAA+K,EAAA,SAAAyB,cAAA,WACA,OAAA3B,EAAA0D,SAAA,OAIAgD,EAAA,WACAgC,GAAA,EACArQ,EAAAsQ,QAEI,KAAAtQ,EAAA6F,KAWJ,UAAAwE,MAAA,yGATAgE,EAAA,WACAgC,GAAA,EACA1I,EAAArI,KAAA,SAAAxC,GACAkD,EAAA6F,KAAA/I,IACM,SAAAwB,GACN0B,EAAA1B,MAAAxB,UAMA,IAAAyT,EAAA,CACAlC,QAAA,WACAgC,IAGAA,GAAA,EACA/O,EAAAC,SAAA8M,MAKA,OAFAA,IACApP,KAAA8I,SAAAwI,GACA,CACAC,YAAA,WACA7I,EAAAyF,aAAAmD,MAIAnD,aAAA,SAAA6C,GACA,IAAAjP,EAAA/B,KAAA+B,UACA,GAAAA,EAAA,CACA,IAAAyP,EAAAzP,EAAAK,QAAA4O,GACAQ,GAAA,IACAzP,EAAAY,OAAA6O,EAAA,GACA,IAAAzP,EAAAH,QAGA5B,KAAAgQ,aAKAyB,IAAA,SAAA5T,EAAAwT,GACA,GAAArR,KAAAsJ,QAAAtJ,KAAA7B,MAAAkJ,EACA,OAAAqK,EAAA1R,KAAAyH,EAAA5J,EAAAwT,GAEA,IAAAM,EAAA3R,KAAAyN,SAAAzN,KAAAyN,WAAAzN,KAAAnC,MACA,GAAA8T,IAAA9T,GAAA,iBAAAA,EACA,OAAA2J,EAEA,GAAAmK,KAAAF,KAAAE,EAAA7I,WAEA9I,KAAAiP,SAAApR,KAAA4T,KAAA5T,EAAAiL,WACA,IACA,OAAA6I,EAAAF,IAAA5T,GACM,MAAAwB,GACN,IAAAA,EAAAuS,UACA,MAAAvS,EAkBA,OAbAxB,KAAAwC,OAAAxC,EAAAiL,SACAjL,EAAAoM,EAAAjK,KAAAnC,IAEAmC,KAAAnC,QACAA,KAAA4T,MAEAzR,KAAA6R,WAAAhU,KAGAwT,KAAA,IAAAnI,GACAyI,WACAN,EAAAvQ,OAAAd,KACAA,KAAAoP,QAAAiC,EAAArR,MACAnC,GAEAJ,IAAA,SAAAU,GACA,GAAA6B,KAAA7B,IAAA6B,KAAAyO,aAAAzO,KAAAyO,YAAAtQ,GACA,OAAA6B,KAAAzB,SAAAJ,GAAAiO,SAAA,GAEA,IAAA9N,EAAA0B,KAAAyN,WACA,GAAAnP,EAAA,CAGA,sBAAAA,EAAAb,IACA,OAAAa,EAAAb,IAAAU,GAEA,IAAAN,EAAAS,EAAAH,GACA,OAAAN,KAAAiL,SAEAjL,EAAAuO,SAAA,GAEAvO,IAEAwD,IAAA,SAAAlD,EAAAN,EAAAwT,GAEAK,EAAA1R,KAAAzB,SAAAJ,GAAAuJ,EAAA7J,EAAAwT,IAEAS,SAAA,SAAA3T,GACA6B,KAAAqB,IAAAlD,EAAAkJ,IAEA0K,GAAA,SAAAC,EAAAX,GACA,GAAArR,KAAAsJ,OAAA,CACA,IAAAA,EAAAtJ,KAAAsJ,OACAnL,EAAA6B,KAAA7B,IACAG,EAAAgL,EAAAmE,SAAAnE,EAAAmE,UAAA,GAAAnE,EAAAzL,MACAoU,EAAA,IAAA7I,EAAAjL,EAAAkT,GAAA,IAAAnI,EAAAI,GASA,OARAhL,GACAA,EAAAH,GAAA6T,EACAhS,KAAAoP,QAAA6C,EAAAjS,SAEA1B,EAAA,iBAAAH,EAAA,OACAA,GAAA6T,EACA1I,EAAAyI,GAAAzT,EAAA2T,IAEAjS,KAQA,OANAA,KAAAiP,OAAA,EACA+C,KAAA3R,OAAA2R,EAAAlJ,SACAmB,EAAAjK,KAAAgS,GAEAhS,KAAAnC,MAAAmU,EACAhS,KAAAoP,QAAA,IAAAlG,EAAAlJ,MACAA,MAEAkS,MAAA,SAAAC,GACA,OAAAnS,KAAA+R,GAAAI,IAEAvL,KAAA,SAAA/I,GAEAmC,KAAAyR,IAAA5T,IAEAwB,MAAA,SAAAA,GAEA,IAAA0C,EAAA/B,KAAA+B,UACAA,GAEAA,EAAAQ,QAAA,SAAAyO,GAEAA,EAAA3R,YAIA+S,SAAA,SAAAvU,GAEAmC,KAAAyR,IAAA5T,IAEAwU,KAAA,WACA,QAAArS,KAAA6R,aACA7R,KAAA6R,WAAAJ,IAAAzR,KAAAoM,YACA,IAKAkG,QAAA,SAAAvR,GACA,OAAAf,KAAAsO,UAAA,SAAA+C,GACAvM,EAAAuM,EAAAxT,QAAA,SAAAA,GACAkD,EAAAlD,QAIAwF,OAAA,WACA,OAAArD,KAAAoM,WAEAxE,SAAA,WACA,OAAA2K,OAAAvS,KAAAoM,YAEAoG,GAAA,SAAAC,EAAAC,GACA,sBAAAD,EAIA,KAHA,iBAAAA,GACAzS,KAAAwS,GAAAC,EAAAhV,IAAAgV,EAAApR,KAEA,IAAA+J,MAAA,qCAQA,OANAsH,IACAD,EAAAC,QAAA,SAAA7U,EAAAuI,GAEA,OAAAsM,EAAA3V,KAAAiD,KAAAnC,EAAAuI,EAAA,MAGAqM,EAAAjU,qBAAA0L,EACA,IAAAuI,EAAAzS,MAEA,IAAAA,KAAA2S,YAAArD,GAAAtP,KAAAyS,IAEA/N,IAAA,SAAA+N,GACA,OAAAzS,KAAAwS,GAAA,SAAA3U,GACA,GAAAA,aAAA8H,MACA,UAAAyF,MAAA,sBAEA,OAAAqH,EAAA5U,MAGA+U,GAAA,SAAAjE,GAEA,IAAArI,EAAA,IAAAqI,EAAA3O,MAEA,OADAsG,EAAA2I,OAAA,EACA3I,GAEAuM,eAAA,SAAAC,EAAAC,GACA,OAAAD,GAAA7M,UAAArE,OAAA,MAAAoR,eAAAhT,KAAA8S,EAAAC,GACA,IAAAC,eAAAhT,KAAAqH,GAAA,IAEA4L,SAAA,SAAAnS,EAAAoS,GACA,GAAAlT,KAAAkO,iBACA,OAAAlO,KAAAkO,iBAAA+E,SAAAnS,EAAAoS,GAEA,GAAAlT,KAAAsJ,OACA,OAAAtJ,KAAAsJ,OAAA2J,SAAAnS,EAAAsL,UAAA8G,GAEA,GAAAA,EAAA,CACA,GAAAA,EAAAjH,MAAAiH,EAAAjH,cAAAnL,EACA,gCAAAA,EAAA,kCAAAoS,EAAAjH,MAEA,GAAAiH,EAAAC,WAAA,MAAArS,GAAA,IAAAA,GAAA,iBAAAA,GAAAqK,MAAArK,IACA,4BAGA,IAAAsS,EAAA,GAEA,OADAA,EAAAC,SAAA,EACAD,GAEAE,eAAAC,GAIA,IAFA,IAAAC,EAAAlW,OAAAkW,KAAAxT,MACAyC,EAAA+Q,EAAA5R,OAAA,GAAA5B,KAAAyO,cAAAzO,KAAAyO,YAAA,IACA7R,EAAA,EAAAC,EAAA2W,EAAA5R,OAAkChF,EAAAC,EAAOD,IAAA,CACzC,IAAAuB,EAAAqV,EAAA5W,GACAiB,EAAAmC,KAAA7B,GACA,GAAAN,aAAAqM,EAAA,CACA,IAAAuJ,EAAAhR,EAAAtE,GACA,GAAAsV,EACAA,IAAA5V,GAEA4V,EAAAhC,IAAA5T,OAEM,CACN,GAAAA,EAAAyL,OAAA,CACA,GAAAzL,EAAAyL,SAAAtJ,KACA,SAGA,IAAAgS,EAAA,IAAA9H,EACA8H,EAAAE,MAAArU,GACAA,EAAAmU,EAGAnU,EAAAM,MACAN,EAAAyL,OAAAtJ,KACAyC,EAAAtE,GAAAN,MAKA6V,cAAA,WACA,IAAAhL,EAAA1I,KACA,OAAA8E,EAAA9E,KAAAoM,UAAA,SAAA9N,GACA,IAAAyD,EAAAoG,EAAA1K,IAAAa,GAIA,GAHAyD,GACAoG,EAAA9G,IAAA/C,EAAAyD,EAAA,IAEAA,EAAA4R,cACA5R,EAAA4R,oBACK,CACL5R,EAAA4R,cAAA,EACA,IAAA5F,EAAAhM,EAAAgM,SAAA1L,EAAAxB,QAAAvC,EAAA,SAAAkE,GACA,QAAA5F,EAAA,EAAAC,EAAAkF,EAAAH,OAA2ChF,EAAAC,EAAOD,IAElD,IADA,IAAAmE,EAAAgB,EAAAnF,GACAgX,EAAA,EAAAC,EAAArR,EAAAZ,OAA0CgS,EAAAC,EAAQD,IAAA,CAClD,IAAAvC,EAAA7O,EAAAoR,GACA7S,EAAAyH,gBAAA6I,EAAAlU,KAAAmB,MAIA,GAAAyP,EAAA/M,OACA,QAAApE,EAAA,EAAAC,EAAAkF,EAAAH,OAA2ChF,EAAAC,EAAOD,IAAA,CAClD,IAAAmE,EAAAgB,EAAAnF,GACAmE,EAAAsO,QAAA,SAAAlR,GACA4P,EAAA/M,OAAA7C,MAMA,OAr6BA,SAAAN,EAAAkD,GACA,IAAAgB,EAAAoG,EAAA1K,IAAAI,GACAmF,EAAAjC,EAAAwH,aAAAxH,EAAAwH,WAAA,IAAAA,KACAxG,EACAA,EAAAiB,KAAAqE,IACAtF,EAAAiB,GAAAjB,EAAAE,KAAAlB,GAAA,IAGAoH,EAAA9G,IAAAxD,EAAAkE,EAAA,CAAAhB,IACAgB,EAAAiB,GAAA,EACAkH,EAAA4J,oBACAjT,QAAAhD,IAGAkD,EAAAgP,kBAAAlS,EAs5BAkW,CAAAzV,EAAAoK,GACA,CACAlH,OAAA,YAt5BA,SAAAT,GACA,GAAAA,EAAAgP,kBAAA,CACA,IAAAlS,EAAAkD,EAAAgP,kBACAhP,EAAAgP,kBAAA,KACA,IAAAhO,EAAAoG,EAAA1K,IAAAI,GACA,GAAAkE,EAAA,CACA,IAAAyP,EAAAzP,EAAAhB,EAAAwH,YACAiJ,GAAA,IACAzP,EAAAY,OAAA6O,EAAA,UACAzP,EAAAhB,EAAAwH,eA84BAyL,CAAA1V,KACAyD,EAAA4R,eACA5R,EAAAgM,SAAAvM,UAGA2F,KAAA,WAEA9E,EAAA4R,eAAAlG,GACA/N,KAAAwB,cAKA0S,gBAAA,WACA,OAAAlU,KAAAmU,cAAAnU,KAAAkO,kBAAAlO,KAAAkO,iBAAAiG,cAAAnU,KAAAkF,YAAAiP,cAEAC,IAAA,SAAAjX,GAGA,OADA6C,KAAA7C,OACA6C,MAEAqU,aAIA,OAHArU,KAAAkN,UAAA7F,IACArH,KAAAkN,QAAAlN,KAAA7C,OAAAkO,KAAAiJ,SAAA,IAAA/E,MAAA,IAEAvP,KAAAkN,SAEAmH,cACArU,KAAAkN,QAAAmH,IAsDA,SAAA3C,EAAAhJ,EAAAuD,EAAA+F,EAAAX,GACA,IAAAlT,EAAAuK,EAAAvK,IACAmL,EAAAZ,EAAAY,OACA,IAAAA,EACA,OAAAZ,EAAA+I,IAAAO,EAAAX,GAEA,IAAA/S,EAAAgL,EAAAmE,SAAAnE,EAAAmE,UAAA,GAAAnE,EAAAzL,MACA,SAAAS,EAAA,CACA,oBAAAA,EAAA,CAEA,IAAAe,EAAA,IAAA+L,MAAA,sCAEA,MADA/L,EAAAuS,WAAA,EACAvS,EAEA,IAAAsS,EAAA,mBAAArT,EAAAb,IAAAa,EAAAb,IAAAU,GAAAG,EAAAH,GACA,GAAAwT,IAAAK,GAAA,iBAAAA,EAEA,OAAAxK,EAGA,IAAAlJ,GAAA,mBAAAA,EAAA+C,IAGA,OAAAyD,EAAAxG,EAAA,SAAAA,GACA,GAAA2N,GAAAxE,GAAAkK,KAAAF,MAAAO,KAAAP,IAEA,OAAAE,EAAAF,IAAAO,EAAAX,GAEA,GAAAW,KAAA3R,OAAA2R,EAAAlJ,SAEA,OAAAkJ,EAAA3R,KAAA,SAAA2R,GACA,OAAAN,EAAAhJ,EAAAuD,EAAA+F,EAAAX,KAKA,IAAAkD,EAAA,MAAAjW,EACA,iBAAAH,EAAA,MACAmL,EAAA0F,WACA3M,EAAAL,KACA1D,EAAA4G,cAAA5H,OACA,GACAgB,EAAA4G,cAAAS,MACA,GACArI,OAAAY,OAAAZ,OAAAyB,eAAAT,OACAA,EACAiW,EAAApW,GAAA6T,EAIAX,KAAA,IAAAnI,EACA,IAAA+I,EAAA,IAAA7I,EAAAjL,EAAAkT,EAAA3I,GAGA,OAFAuJ,EAAAN,WACAM,EAAAnR,OAAA4H,EACA5D,EAAAyP,IAAAjW,EACAgL,EAAA8F,QAAA6C,EAAAvJ,GACAY,EAAAmI,IAAA8C,EAAAtC,GAAA,WACAvJ,EAAA0G,QAAAiC,EAAA3I,OApCApK,EAAA+C,IAAAlD,EAAA6T,EAAAX,GAwCA3I,EAAA0G,QAAAiC,EAAA3I,GAGA,IAAA3G,EAAAoG,EAAA1K,IAAAa,GAGA,GAAAyD,EAAA,CACAA,IAAAwN,MAAA,GACA,QAAA3S,EAAA,EAAAC,EAAAkF,EAAAH,OAAwChF,EAAAC,EAAOD,IAAA,CAC/C,IAAAmE,EAAAgB,EAAAnF,GACAmE,IAAAuI,GAEAvI,EAAAqO,QAAAiC,IAIA,OAAAW,EAMA,QAAA7T,KAtIAb,OAAAkX,iBAAAlH,EAAA,CACAmH,IAAA,CACAhX,IAAA,WACA,OAAAuC,KAAAoM,SAAA,IAEA/K,IAAA,SAAAxD,GACAmC,KAAAyR,IAAA5T,IAEAL,YAAA,GAEAkX,aAAA,CACAjX,IAAA,WACA,WAAA4K,KAAArI,KAAAoQ,aAAA,aAGA8C,OAAA,CACAzV,IAAA,WAEA,GAAAuC,KAAAkO,iBACA,OAAAlO,KAAAkO,iBAAAgF,OAEA,GAAAlT,KAAAsJ,OAAA,CACA,IAAAqL,EAAA3U,KAAAsJ,OAAA4J,OAAAzQ,YAAAzC,KAAAsJ,OAAA4J,OACA,OAAAyB,KAAA,iBAAA3U,KAAA7B,IAAA,eAAA6B,KAAA7B,KAEA,OAAA6B,KAAAkF,aAEA7D,IAAA,SAAA6R,GAEA5V,OAAAC,eAAAyC,KAAA,UACAnC,MAAAqV,MAIA0B,WAAA,CACAnX,IAAA,WACA,IAAAmX,EAAA,IAAAC,EAAA7U,MAIA,OAHA1C,OAAAC,eAAAyC,KAAA,cACAnC,MAAA+W,IAEAA,GAEAvT,IAAA,SAAAuT,GAEAtX,OAAAC,eAAAyC,KAAA,cACAnC,MAAA+W,QAyFAtH,EACAhQ,OAAAC,eAAA2M,EAAA/L,EAAAb,OAAA8B,yBAAAkO,EAAAnP,IAiKA,SAAA2W,EAAApM,EAAA5F,GACA,OAAAgC,EAAA4D,EAAAqM,aAAArM,EAAA0D,SAAA,YAAA4I,GAEA,IAAAC,EAAAvM,EAAA0D,QAAAvE,GACAqN,EAAAF,EACAtM,EAAAsG,WAAAgG,EAAAzF,MAAA,GAAAyF,EACA,GACA,OAAAlS,EAAA/F,KAAA2L,EAAAwM,EAAA,SAAAC,EAAAvL,EAAAH,GAIA,GAHA0L,EAAA,IACAA,EAAAD,EAAAtT,OAAAuT,GAEAA,IAAAD,EAAAtT,OACA,IAAAwT,GAAA,EAEA,IAAAC,EAAA,CAAAF,EAAAvL,GACA0L,EAAAJ,EAAAvS,OAAAqD,MAAAkP,EAAAG,EAAAE,OAAA9L,IACA0K,EAAAzL,EAAAyL,aACA,GAAAc,GAAAd,EAAA,CAEA,IAAAqB,EAAA/L,GACAA,IAAA/E,IAAA,SAAA+Q,GAGA,OAFAA,eAAAtB,EAAAsB,EAAAtB,EAAAuB,KAAAD,IACAnM,OAAAZ,EACA+M,KAEAD,eACAF,EAAAL,EAAA1F,MAAA4F,EAAAvL,EAAAuL,GAEA,IAAA9D,EAAA,IAAA9H,EAAAb,EAAAe,EAAA6L,EAAAH,EAAAvL,GACAwL,IACA/D,EAAA+D,OAAA,GAEA,IAAAO,EAAAlM,EAAA7H,OACA,GAAA+T,EAAA,EAEA,IADA,IACA/Y,EAAAsY,EAAAtT,OAAA+T,EAA+C/Y,EAAAuY,GAAmB,CAClE,IAAAS,EAAAlN,IAAA9L,GACAgZ,IACAlN,EAAA9L,GAAAyK,EACAuO,EAAAzX,KAAAwX,EACAjN,EAAAkN,EAAAzX,KAAAyX,GAIA,OAAA9Q,EAAAoQ,IAAAF,EACAtM,EAAA0G,QAAAiC,EAAA3I,GACAA,EAAA+I,IAAAyD,EAAA7D,GAAA,WACA,GAAA4D,IAEAvM,EAAAmN,cAAAnN,EAAA8B,QACA8K,EAAAL,EAAAtS,OAAAqD,MAAAiP,EAAAI,EAAAE,OAAA9L,IAEAf,EAAAsG,YACA,QAAApS,EAAAuY,EAAkCvY,EAAAqY,EAAArT,OAAuBhF,IACzDqY,EAAArY,GAAAuB,IAAAvB,EAKA,OADA8L,EAAAoN,cAAApN,EAAA8B,QACA8K,QAzNApL,EAAA0I,GAAA,SAAAmD,GACA,IAAAC,EAAAhW,KAAAmK,KAAA,IACArJ,EAAAkV,EAAAxX,UACAA,EAAAuX,EAAAvX,UACA,GAEA,IADA,IAAAyX,EAAA3Y,OAAA4Y,oBAAA1X,GACA5B,EAAA,EAAkBA,EAAAqZ,EAAArU,OAAkBhF,IAAA,CACpC,IAAAO,EAAA8Y,EAAArZ,GACAU,OAAA8B,yBAAA0B,EAAA3D,IACAG,OAAAC,eAAAuD,EAAA3D,EAAAG,OAAA8B,yBAAAZ,EAAArB,IAGAqB,EAAAO,EAAAP,SACGA,OAAA0L,EAAA1L,WACH,OAAAwX,GAGA9L,EAAAC,KAAA,SAAA1H,EAAA0T,GAEA,IAAAlR,EAAAjF,KAqBA,OAnBA,IAAA1C,OAAA8B,yBAAAY,KAAA,aAAAoW,UAEAD,EAAA9T,EAAAc,YAAAnD,OACAxB,WAGA2X,IACAA,EAAA,WACA,KAAAnW,gBAAAmW,GAGA,OAAAA,EAAAhM,KAAA1H,GAFAwC,EAAAe,MAAAhG,KAAAiG,cAMAkQ,EAAA3X,UAAAlB,OAAAY,OAAA8B,KAAAxB,YACA0G,YAAAiR,EACAjX,EAAAiX,EAAAnW,OAEAmW,EAAA3Q,OAAA/C,IAEAyH,EAAA1E,OAAA,SAAA/C,GACA,IAAAjE,EAAAwB,KAAAxB,UACA,SAAA6X,EAAAxY,GACA,uBAAAA,EACAA,aAAA8H,MACA9H,EAAA,GAAAyY,EAAAC,GAAAF,EAAAxY,EAAA,KAAAyY,EAEApM,EAAAC,KAAAtM,GAEI,iBAAAA,EACJ2Y,GAAA3Y,GACI,iBAAAA,EACJ4Y,GAAA5Y,GACI,kBAAAA,EACJ6Y,GAAA7Y,GACI,mBAAAA,EACJA,EAEAqM,EAGA,oBAAAzH,EAEA,OADAzC,KAAAxB,UAAAwP,QAAAvL,EACAzC,KAEA,QAAA7B,KAAAsE,EAAA,CACA,IACA5E,GADAqD,EAAA5D,OAAA8B,yBAAAqD,EAAAtE,IACAN,MAUA,GATA,mBAAAA,GAAAmC,KAAA2W,cACA9Y,EAAAwY,EAAAxY,IACAW,UAAAwP,UAAA3G,IACA7I,EAAAC,eAAA,aACAD,EAAAwP,QAAAxP,EAAAwP,QAAA1Q,OAAAY,OAAAM,EAAAwP,SAAA,IAEAxP,EAAAwP,QAAA7P,GAAAN,EAAAW,UAAAwP,SAGA,mBAAAnQ,GAAA,iBAAAM,EAAA,CACA,GAAAN,EAAAiL,SAAA,CAEA,SAAA8N,EAAAzY,EAAAwQ,GACA,OACAlR,IAAA,WACA,IAAAc,GAAAyB,KAAAyO,cAAAzO,KAAAyO,YAAA,KAAkEtQ,GAUlE,OATAI,IACAyB,KAAAyO,YAAAtQ,GAAAI,EAAA,IAAAoQ,EACApQ,EAAAJ,MACAI,EAAA+K,OAAAtJ,KACAzB,EAAAwD,WAEAxD,EAAAsR,QAGAtR,GAEA8C,IAAA,SAAAxD,GACA6T,EAAA1R,KAAA7B,GAAAuJ,EAAA7J,IAEAL,YAAA,GAGA,IAAA0D,EAAA0V,EAAAzY,EAAAN,GACAP,OAAAC,eAAAiB,EAAAL,EAAA+C,GACA,IACA5D,OAAAC,eAAAyC,KAAA7B,EAAA+C,GACM,MAAA7B,GACNe,QAAAyW,KAAA,4BAAA1Y,GAEA,SACK,GAAAoI,EAAA1I,GACLqD,EAAA4V,GAAAjZ,QACK,GAAAA,EAAAkZ,UAEL,KADA7V,EAAArD,EAAAkZ,SAAA5Y,EAAA6B,OAEA,cAGAnC,EAAAmZ,EAAAnZ,EAAAM,GAGAb,OAAAC,eAAAiB,EAAAL,EAAA+C,GACArD,IAAAwJ,GACAlJ,KAAA6B,KACA1C,OAAAC,eAAAyC,KAAA7B,EAAA,CAAuCN,QAAAoZ,cAAA,EAAAzZ,YAAA,IAEvCwC,KAAA7B,GAAAN,EAEAW,EAAAwP,SAGA1Q,OAAAC,eAAAyC,KAAA7B,EAAA+C,GAMA,OAHAuB,KAAAyU,QA88BA,SAAAC,EAAAC,GAEA,IAAAzL,EAAA3L,KAAA2L,eAAA3L,KAAA2L,aAAA,IAAAtJ,EAAAzC,SAIA,OADA+L,EAAAtK,IAAA8V,EAAAC,GAAA,WAA4D,WAAAD,IAC5DnX,MAn9BAjD,KAAAiD,KAAAyC,EAAAyU,QAEAlX,MAGA1C,OAAAC,eAAA2M,EAAA,mBACAzM,IAAA,WACA,OAAAuC,KAAAvB,eAAA,oBACAuB,KAAAqX,kBACArX,KAAAqX,iBAAA,IAAArX,KACAA,KAAAqX,iBAAAxO,QAAAkG,EACA/O,KAAAqX,qBAGAnN,EAAAgN,OAAA,SAAAC,EAAAtL,GACA,IAAAD,EAAA,IAAAvJ,EAAAzC,QACAgM,EAAAC,kBACA7L,KAAA2L,eAAA3L,KAAA2L,aAAA,IAAAtJ,EAAAzC,UACAyB,IAAA8V,EAAAvL,IA8HA,oBAAAjO,SACAuM,EAAA1L,UAAAb,OAAAgJ,UAAA,WACA,IAAAA,EAAA3G,KAAAoM,QAAArE,GAAApK,OAAAgJ,YACA+B,EAAA1I,KACAmU,EAAAnU,KAAAmU,aACA,GAAAA,EAAA,CACA,IACAvX,EAAA,EACA,OACAgK,KAAA,WACA,IAAApG,EAAAmG,EAAAC,OAIA,OAHApG,EAAA2G,OACA3G,EAAA3C,MAAA6K,EAAAnK,SAAA3B,IAAAuX,IAEA3T,IAIA,OAAAmG,IAIA,IAAA2Q,EAAApN,EAAAoN,KAAAjV,EAAA2C,QAAAkF,EAAA,SAAArM,QACA,IAAAA,IACAmC,KAAAnC,UAEE,CACFoR,OAAA,EACAD,YAAA,EAEAzQ,SAAA,SAAAJ,EAAAoQ,GACA,IAAA9L,EAAAzC,KAAAyO,cAAAzO,KAAAyO,YAAA,IAAAhK,GACA+J,EAAA/L,EAAAhF,IAAAU,GAYA,OAXAqQ,KAEAA,EAAA,IAAAD,GAAAvO,KAAAuO,gBACApQ,MACAqQ,EAAAlF,OAAAtJ,KACAwO,EAAAzM,WAEAyM,EAAAqB,OAEApN,EAAApB,IAAAlD,EAAAqQ,IAEAA,KAIAc,EAAApF,EAAAoF,UAAAjN,EAAA2C,QAAAkF,EAAA,SAAAzE,EAAA8R,EAAAvM,EAAAwM,GAIA,IAHA/R,IAAA4B,GAAA2D,KACAhL,KAAAyF,UAEA8R,IACAvX,KAAAuX,YACAvM,GACA,QAAApO,EAAA,EAAAC,EAAAmO,EAAApJ,OAAuChF,EAAAC,EAAOD,IAC9CoD,KAAA,SAAApD,GAAAoO,EAAApO,GAIA4a,IACAxX,KAAAwX,WAAA,IAEE,CACFC,aAAA,WACA,OAAAzX,KAAAuX,WAAAvX,KAAAuX,UAAAnL,WAEAqB,SAAA,WAEA,kBAAAzN,KAAA0X,WACA1X,KAAA0X,WAAAtP,EAAAR,gBACI,GAAA+P,SAAA3X,KAAA0X,qBAEA,IAAA1X,KAAA+B,WAAA,eAAA/B,KAAA0X,YAAA1X,KAAA4X,eAAA5X,KAAA8V,cAAA,EAEJ,OAAAvO,IACAA,EAAA2D,WAAAlL,KAAA8V,eACAvO,EAAAuG,iBAAA9N,KAAA8V,gBAAA9V,KAAAkO,kBACAvG,EAGA3H,KAAAP,SAAAO,KAAA+U,YASA,IAIA8C,EAJAH,EAAA1X,KAAA0X,WACA/M,EAAApD,EACAuQ,EAAAvQ,MAAA6C,aAAA,IAAAxB,EAGA,IACA5I,KAAAwK,SAEAsN,EAAA5M,WAAAlL,KAAAwK,SAEAxK,WAAA8V,eAAA9V,KAAAwK,SAAAxK,KAAA8V,cAAA,IAAA9V,KAAAvB,eAAA,aACAqZ,EAAAhK,gBAAA9N,KAAA8V,eAkBA,IAfA,IAEAiC,EAAAC,EAAAC,EAFAV,EAAAvX,KAAAyX,eAEAS,EAAA,GAEAC,EAAA,EACAzP,EAAA1I,KACAoY,EAAA,SAAA5X,GAGA,OAFA0X,EAAAlY,KAAAqY,SAAA,GAAA7X,EAEA,KADA2X,EAEAG,IAEAtY,KAAAuY,yBAGA3b,EAAA,GAAmBmb,EAAA/X,KAAAgY,EAAApb,EAAA,WAAAA,EAAA,YAAAob,KAAAhY,KAA2FpD,IAC9G,GAAAmb,EAAA,CACA,IAAAvX,EAAAuX,EAAA3L,QAAAnE,GACAzH,KAAAH,MACA8X,IAEAF,EADA,IAAArb,EACA4D,EAAAH,KAAA+X,GAEA5X,EAAAH,KAAA+X,EAAAha,KAAA,CACAia,QAAAzb,EACA2b,wBAAAN,MAIAC,EAAAtb,GAAA4D,OAGA0X,EAAAtb,GAAAmb,EAGA,QAAAI,EACA,OAAAG,IAIA,SAAAA,IACAR,EAAAhK,kBAAAzG,IACAyQ,EAAAhK,gBAAAzG,GAEA,IAAAmD,EAAAsN,EAAAtN,QACA,GAAA9B,EAAAoN,eAAAtL,GAAA0N,EAAA,IAAAvQ,EAKA,OAHAgD,GACAA,EAAAO,WAAAV,GAEAG,KAAAmD,iBAAAtD,GACAG,EAAAmD,iBAAApF,EAAAoN,gBACApN,EAAAwF,iBACAvG,EAEAe,EAAAjJ,SAAA+Y,EAAA9P,EAAAqM,aAGA,IAAAvU,EAAA+W,IAAAvR,MAAA0C,EAAAwP,KAAA,GACAO,EAAAjY,KAAAH,OAAAG,EAAAsI,SAGA,GAFA0B,EAAAsN,EAAAtN,QAEAiO,EAAA,CACA/P,EAAAjJ,SAAAiJ,EAAAjJ,QAAAiZ,QAEAhQ,EAAAjJ,QAAAkZ,uBAAAnY,EACAkI,EAAAjJ,QAAAiZ,MAAA,mDAEAhQ,EAAAgP,gBAAAhP,EAAA8O,YACA9O,EAAAoN,cAAAtL,GAEA,IAAA/K,EAAAiJ,EAAAjJ,QAAAe,IAAAH,KAAA,SAAA6X,GAKA,OAJAzY,IAAAiJ,EAAAjJ,UACAiJ,EAAAjJ,QAAA,KACAmZ,EAAAV,EAAAJ,EAAAtN,UAEA0N,GACO,SAAA7Y,GACP,GAAAI,IAAAiJ,EAAAjJ,QAEAiJ,EAAAjJ,QAAA,KACAiJ,EAAAmQ,UAAAxZ,EACAuZ,EAAA,aACQ,GAAAnZ,EAAAkZ,uBAER,OAAAlZ,EAAAkZ,uBAEA,MAAAtZ,SAGAuZ,EAAApY,EAAAgK,GAEA,OAAAgO,EAAAhY,GAEA,SAAAgY,EAAAhY,GACA,OAAAqX,GAAArX,KAAAsI,SACA,CACAuF,WAAA7N,GAGAA,EAEA,SAAAoY,EAAApY,EAAAgK,GACA9B,EAAAgP,gBAAAhP,EAAA8O,YACA7M,GACAA,EAAAO,WAAAV,GAEA9B,EAAAoN,cAAAtL,EACA9B,EAAAqM,YAAAvU,EACAkI,EAAAgP,YAAAhP,EAAA3G,WAAA2G,EAAAkP,cAAAjN,KAAA7B,WAAA,IAAA0B,EAAA,kBAUA,OAhFAqN,GAAA,EA4EAI,EAAAS,QAEAT,EAAAS,MAAA,MAEAT,EACI,QACJtN,GACAA,EAAAO,WAAA4M,EAAAtN,SAEAjD,EAAAoD,IAIA6E,gBAAA,SAAA1M,GAGA,IAAAiV,EAAAC,EADA9N,EAAA1L,UAAAgR,gBAAAzS,KAAAiD,KAAA8C,GAEA,QAAAlG,EAAA,GAAkBmb,EAAA/X,KAAAgY,EAAApb,EAAA,WAAAA,EAAA,YAAAob,KAAAhY,KAA2FpD,IAC7Gmb,KAAAjP,UACAhG,EAAAiV,IAKA3I,QAAA,SAAAyB,EAAAE,EAAAD,GAQA,GAPA9Q,KAAA0X,WAAA,cACA1X,KAAAP,UAAAO,KAAAP,QAAAiZ,QACA1Y,KAAA8V,cAAA,IACA9V,KAAA8V,cAAA,GAEA9V,KAAAP,QAAA,MAEAsR,IAAA/Q,KAAAkO,kBAAA2C,GAAA,aAAAA,EAAA5E,KAGA,IADA,IAAA8L,EAAAC,EACApb,EAAA,GAAmBmb,EAAA/X,KAAAgY,EAAApb,EAAA,WAAAA,EAAA,YAAAob,KAAAhY,KAA2FpD,IAC9Gmb,IAAAhH,IAEAF,EAAA,IAAA3H,EAAA2H,IAKA,OAAA3G,EAAA1L,UAAA4Q,QAAArS,KAAAiD,KAAA6Q,EAAAE,EAAAD,IAGAd,QAAA,WACA,eAAAhQ,KAAA0X,YAAA1X,KAAA4X,eACA5X,KAAA0X,WAAA,IAEAxN,EAAA1L,UAAAwR,QAAAjT,KAAAiD,OAGAwQ,WAAA,SAAAC,GAEA,IAAAA,KAAAjG,QAAA4F,aACA,WAAAlH,IAIA4P,aAAA,WAGA,IAFA,IACAf,EAAAC,EADA5R,EAAA,GAEAxJ,EAAA,GAAkBmb,EAAA/X,KAAAgY,EAAApb,EAAA,WAAAA,EAAA,YAAAob,KAAAhY,KAA2FpD,IAC7GwJ,EAAAnE,KAAA8V,GAEA,OAAA3R,GAEAqL,IAAA,SAAA5T,EAAAwT,GACA,IAAAtU,EAAAiD,KACA,OA7wDA,SAAAnC,EAAAiF,GACA,OAAAjF,KAAAwC,OAAAxC,EAAAiL,SACAjL,EAAAwC,KAAAyC,GAEAA,EAAAjF,GAywDAkb,CAAA/Y,KAAAyN,WAAA,SAAAuL,GACA,GAAAA,IAAAnb,GAAA,iBAAAA,EACA,OAAA2J,EAEA,IAAA+P,EAAAxa,EAAAwa,UAAAnL,UACA,GAAAmL,EAAA7E,QAEA,OADA6E,EAAA,QAAAxa,OAAAc,EAAAd,EAAA+b,gBACA/b,EAAAqS,QAAAiC,GACK,GAAA2H,KAAAvH,IACL,OAAAuH,EAAAvH,IAAA5T,EAAAwT,GAEA,IAAAhS,EAAA,IAAA+L,MAAA,qEAEA,MADA/L,EAAAuS,WAAA,EACAvS,KAIA4Z,WAAA,SAAAvG,GAEA,OADA1S,KAAAuX,UAAAnL,UAAAsG,UACA1S,QAGA1C,OAAAC,eAAA+R,EAAA9Q,UAAA,cACAf,IAAA,WACA,OAAAuC,KAAAuX,aAAAvX,KAAAuX,UAAA7E,WAKAM,eAAA3Q,EAAA2C,QAAAsK,EAAA,SAAA5G,EAAAwQ,EAAAnG,GACA/S,KAAAyF,OAAAiD,EACAwQ,IAAA7R,IACArH,KAAAgO,QAAAkL,GAEAnG,IACA/S,KAAA+S,cAAA,IAEE,CACF9D,OAAA,EACAxB,SAAA,WACA,IAAAjN,EAAA8O,EAAA9Q,UAAAiP,SAAA1Q,KAAAiD,MACA,GAAAQ,KAAAH,KAAA,CACA,IAAAmK,EAAAxK,KAAAwK,QACA9B,EAAA1I,KAgBA,OAfAQ,EAAAH,KAAA,SAAAxC,GACA2M,IAAA9B,EAAA8B,UACAN,EAAA1L,UAAA4Q,QAAArS,KAAA2L,GACAA,EAAAoN,cAAApN,EAAA8B,UAEK,SAAAnL,GAELe,QAAAf,MAAA,6BAAAA,GACAmL,IAAA9B,EAAA8B,UACAN,EAAA1L,UAAA4Q,QAAArS,KAAA2L,GACAA,EAAAoN,cAAApN,EAAA8B,QACA9B,EAAAqM,YAAA,mBAAA1V,EACAqJ,EAAAgP,WAAA,gBAGA1X,KAAA+S,cAAA,gBAAA/S,UAAA+U,YAAA/U,KAAAgO,QAEA,OAAAxN,GAEAiR,IAAA,SAAA5T,EAAAwT,GACA,OAAArR,KAAAyF,OAAAgM,IAAA5T,EAAAwT,MAIA,IAAA8H,EAAA9W,EAAA2C,QAAAsK,EAAA,WACAA,EAAAtJ,MAAAhG,KAAAiG,YACE,CACFwH,SAAA,WAEA,IAAA2L,EAAA7R,IAAAwE,kBAAA/L,WACA,OAAAoZ,OAAApZ,KACAoZ,EAAA3L,WAEA6B,EAAA9Q,UAAAiP,SAAA1Q,KAAAiD,OAEAqZ,yBAAA,IAGAC,EAAAjX,EAAA2C,QAAAkF,EAAA,SAAArM,EAAA0b,GACAvZ,KAAAnC,QACAmC,KAAAkR,WAAAqI,GACE,IAEFzK,EAAAzM,EAAA2C,QAAAkF,EAAA,SAAAsP,EAAA3Q,GACA7I,KAAAwZ,UACAxZ,KAAA6I,WACE,CACFuD,QAAA,WAEA,IAAAvD,EAAA7I,KAAA6I,QACAtB,EAAAsB,EAAAkD,kBAAAlD,EAAA,IAAAD,EAAAC,GACA2Q,EAAAxZ,KAAAwZ,QACA,OAAAjS,EAAA8C,cAAA,WACA,OAAAmP,EAAApN,aAIAoD,gBAAA,SAAA1M,GACA9C,KAAAgL,SAAAhL,KAAAgL,QAAAzI,QAAAO,IAGAsN,WAAA,WAGA,IAFA,IAAA5F,EAAAN,EAAA1L,UAAA4R,WAAArT,KAAAiD,MACAgL,EAAAhL,KAAAgL,SAAA,EACApO,EAAA,EAAAC,EAAAmO,EAAApJ,OAAsChF,EAAAC,EAAOD,IAAA,CAC7C,IAAA6I,EAAAuF,EAAApO,GACA6I,EAAA4K,iBACA7F,EAAAa,KAAAC,IAAAd,EAAA/E,EAAA4K,mBAGA,OAAA7F,GAGAiH,IAAA,SAAA5T,EAAAwT,GAEA,OADArR,KAAA6I,QACA7I,KAAAwZ,QAAA/H,IAAA5T,EAAAwT,MAIAiF,EAAAjU,EAAA2C,QAAAkF,EAAA,SAAAoM,EAAAzY,GACA,OAAA4b,EAAAzZ,KAAAnC,EAAAyY,IACE,CACFlK,QAAA,SAAArO,GACA,IAAAF,EAAAqM,EAAA1L,UAAA4N,QAAArP,KAAAiD,KAAAjC,GACA2b,EAAA1Z,KACA,OAAA8E,EAAAjH,EAAA,SAAAmX,GACA,GAAAjX,KAAA+J,SAAA,CACA,IAAA/J,EAAAiK,aAKA,OAJA,IAAAgN,EACA,cAKK,IAAAA,EACL,OAAAjX,KAAAmK,gBACA,GAEA8M,EAEA,GAAA0E,EAAAC,cAAAD,EAAAE,cAAA5E,EAAA,CAEA,IAAA6E,EAAAH,EAAAG,SACAF,EAAAD,EAAAC,aACAD,EAAAC,aAAA,KACA3E,EAAA0E,EAAAI,KAAAH,GACAE,GACAH,EAAAG,WAGA,OAAA7E,KAGAzS,QAAA,SAAAO,EAAAwD,GACA,OAAAxB,EAAA9E,KAAAoM,QAAArE,GAAA,SAAAiN,GACAA,EAAAzS,QAAAO,EAAAwD,MAGA3D,OAAA,SAAAgH,EAAAC,GACA,IAAAxD,EAAAH,UACA,OAAA6O,EAAA9U,KAAA,SAAAgV,EAAA+E,GACA,OAAAA,EAAApQ,EAAAC,EAAA,GAAA2F,MAAAxS,KAAAqJ,EAAA,OAGAnE,KAAA,WACA,IAAAmE,EAAAH,UACA,OAAA6O,EAAA9U,KAAA,SAAAgV,EAAA+E,GACA,OAAAjV,EAAAiV,EAAA/E,EAAApT,OAAA,KAAA2N,MAAAxS,KAAAqJ,IAAA,SAAAkP,GACA,OAAAN,EAAApT,YAIAoY,QAAA,WACA,IAAA5T,EAAAH,UACA,OAAA6O,EAAA9U,KAAA,SAAAgV,EAAA+E,GACA,OAAAjV,EAAAiV,EAAA,OAAAxK,MAAAxS,KAAAqJ,IAAA,SAAAkP,GACA,OAAAN,EAAApT,YAIAqY,IAAA,WACA,OAAAnF,EAAA9U,KAAA,SAAAgV,EAAA+E,GACA,OAAAjV,EAAAiV,EAAA/E,EAAApT,OAAA,iBAAA0T,GACA,OAAAA,EAAA,QAIA5I,MAAA,WACA,OAAAoI,EAAA9U,KAAA,SAAAgV,EAAA+E,GACA,OAAAjV,EAAAiV,EAAA,iBAAAzE,GACA,OAAAA,EAAA,QAIAwE,KAAA,SAAAI,GACA,IAAAxR,EAAA1I,KACA,OAAA8E,EAAA9E,KAAAoM,SAAA,YAAA4I,GACA,IACAE,EADAD,EAAAvM,EAAA0D,QAAAvE,GAIA,GAFAmN,IACAE,EAAAF,EAAA,IACAC,EAAA,CAEA,IADA,IAAAkF,EAAA,GACAtd,EAAAmY,EAAApT,OAAAhF,EAAA,EAAsCA,EAAAC,EAAOD,IAC7Cud,EAAAlY,KAAA,CACAmY,MAAAnF,EAAArY,GACAyd,QAAArF,EAAApY,KAGAud,EAAAL,KAAA,SAAAQ,EAAAC,GACA,OAAAL,EAAAI,EAAAF,MAAAG,EAAAH,SAEApF,EAAArS,OAAA,EAAAqS,EAAApT,QACAoT,EAAA/S,KAAA+D,MAAAgP,EAAAmF,EAAAzV,IAAA,SAAAyV,GACA,OAAAA,EAAAE,WAEA3R,EAAA8R,YAAAL,EAAAzV,IAAA,SAAAyV,GACA,OAAAA,EAAAC,aAGApF,EAAA8E,KAAAI,GAiBA,OAfAxR,EAAAjD,SACAiD,EAAAiR,aAAAO,EACAxR,EAAAkR,aAAA5E,EACAtM,EAAAmR,WACAnR,EAAAmR,UAAA,IAGA3E,EACAxM,EAAA+I,IAAAyD,GAEAxM,EAAA0G,UACA1G,EAAAoN,cAAApN,EAAA8B,QACA9B,EAAA8R,cACA9R,EAAAmN,cAAAnN,EAAA8B,SAEAwK,KAGAtC,QAAA,WACA,IAAAhK,EAAA1I,KACA,OAAA8E,EAAA9E,KAAAoM,QAAArE,GAAA,SAAAiN,GAMA,OALAA,EAAAtC,UACAhK,EAAAjD,SACAiD,EAAAmR,UAAAnR,EAAAmR,UAEAnR,EAAA0G,UACA4F,KAGAzF,MAAA,SAAA5F,EAAA8Q,GACA,OAAA3V,EAAA9E,KAAAoM,SAAA,YAAA4I,GACA,OAAAA,GAAA,IAAAzF,MAAA5F,EAAA8Q,MAGArY,QAAA,SAAAsY,GAEA,IAAA1F,EAAAhV,KAAAoM,QAAArE,GACA,OAAAiN,EAAA5S,QAAAsY,IAEAC,SAAA,SAAAD,GACA,OAAA1a,KAAAoC,QAAAsY,IAAA,GAGAvO,IAAA,SAAAuO,GACA,GAAA1a,KAAAyF,OACA,OAAAzF,KAAAyF,OAAA0G,IAAAuO,GAEA,IAAA9d,EAAAoD,KAAAoC,QAAAsY,GACA1F,EAAAhV,KAAAoM,UACA9F,EAAAtG,KAAAmU,aAAAuB,KAAAV,EAAApY,IAAA,IAEA,OADA0J,EAAAtD,GAAA0X,EACApU,GAGA/B,IAAA,SAAA1G,IACA,IAAAmC,KAAAoC,QAAAvE,IACAmC,KAAAiC,KAAApE,IAGA+c,OAAA,SAAAC,GACA,IAAAC,EAAA9a,KAAAoC,QAAAyY,GAIA,OAHAC,GAAA,GACA9a,KAAA2C,OAAAmY,EAAA,GAEA9a,MAEA+a,MAAA,WACA/a,KAAA+R,GAAA,KAEAlS,IAAA,SAAA6a,GACA,OAAA1a,KAAAoC,QAAAsY,IAAA,KAkCA,SAAAM,EAAA3Z,GACA,IAAA6T,EAAA,GAMA,OALA7T,EAAAkB,SACAlB,EAAAkB,QAAA,SAAAkT,GACAP,EAAAjT,KAAAwT,KAGAP,EAtCA5X,OAAAC,eAAA+Y,EAAA9X,UAAA,UACAf,IAAA,WACA,sBAAAuC,KAAA,CACA,IAAAyC,EAAAzC,KAAAyO,cAAAzO,KAAAyO,YAAA,IACA,IAAAhM,EAAAb,OAAA,CACA,IAAAA,EAAAa,EAAAb,OAAA,IAAA6U,GAOA,OANA7U,EAAAzD,IAAA,SACAyD,EAAA0H,OAAAtJ,KACA1C,OAAAC,eAAAyC,KAAA,UACAiX,cAAA,EACApZ,MAAA+D,IAEAA,KAIAqV,cAAA,EACA5V,IAAA,SAAAO,GAEA5B,KAAAnC,MAAA+D,YAGA0U,EAAAC,GAAA,SAAApC,GACA,IAAA8G,EAAAC,GAAA,CAAgC/G,iBAChC,OAAAnU,OAAAsW,EAEA,IAAA2E,EAEAA,GAcA,IAAAE,EAAA9Y,EAAA2C,QAAAsK,EAAA,SAAAxI,GACA9G,KAAA8G,aACE,CACFyQ,UAAA,CACAnL,QAAA,WACA,IACAgP,EADAC,EAAA9T,EAEA,OACA,SAAAX,IACA,IAAAG,EACAnK,EACAqK,EACAD,EACA,GAAAoU,EAAA,CAKA,GAHAnU,EAAAmU,EAAAzU,SACA/J,EAAAwe,EAAAxe,GACAmK,EAAAqU,EAAAvd,QACAkJ,EAAA1G,KACA,UAAA+K,MAAA,6CAAArE,GAEAC,EAAAoU,EAAApU,gBAEAqU,GAEAA,EAAA5Q,UAEA7N,EAAA,EACAqK,EAAAjH,KAAA8G,YAGA,QACA,IAAAI,EAAAD,EAAAD,EAAA,gBAAAD,GACA,GAAAG,EAAAC,KAAA,CAIA,IAHA,IAAAmU,EAAAtb,KAAAgL,SAAA,GACAuQ,EAAA3e,EACA4e,EAAA,GACAxb,KAAAgY,EAAApb,EAAA,WAAAA,EAAA,WAEAoD,KAAAgY,GAAA3Q,EACAzK,IAEA,IAAAA,EAAA,EAAkBA,EAAA2e,EAAe3e,IAAA,CAEjC,IAAAob,EAAApb,EAAA,WAAAA,EAAA,SACAoD,KAAAgY,IAAAhY,KAAAgY,GAAAlP,UACA0S,EAAAvZ,KAAAjC,KAAAgY,IAGA,IAAApb,EAAA,EAAkBA,EAAA0e,EAAA1Z,OAAuBhF,KACzC,GAAA4e,EAAApZ,QAAAkZ,EAAA1e,KACA0e,EAAA1e,GAAAuR,aAAAnO,MAIA,OADAA,KAAAgL,QAAAwQ,EACAtU,EAAArJ,MAEAkJ,EAAAG,EAAArJ,MAGA,IACA,IAAAma,EAAApb,EAAA,WAAAA,EAAA,SAoBA,GAnBAoD,KAAAgY,KAAAjR,GAAA/G,KAAAgY,KAAA3Q,IAEAN,KAAA+B,UACA9I,KAAA+B,WACAgF,EAAA+B,SAAA9I,MAEAA,KAAAgY,GAAAjR,GACS,mBAAAA,GAAAR,EAAAQ,IACTqU,EAAA,CACAxe,IACA+J,SAAAI,KAEAH,EAAA7J,KAAAiD,MACApD,EAAAwe,EAAAxe,GAEAoD,KAAAgY,GAAA,MAGApb,IACAmK,KAAA1G,KAAA,CAEA,IAAAqI,EAAA1I,KACAob,EAAA,CACAxe,IACA+J,SAAAM,GAEA,IAAAG,EAAA,KAEA3H,EAAAsH,EAAA1G,KAAA,SAAAxC,GACA,WAAAuJ,GACAA,GAAA,OACAL,EAAAlJ,KAGAud,EAAAvd,QACAwd,EACAA,EAAAhR,cAAAzD,EAAAxI,KAAAsK,IAEA9B,EAAA7J,KAAA2L,KACS,SAAArJ,GAGT,OAFA+b,EAAAvd,MAAAwB,EACA+b,EAAApU,YAAA,EACAqU,EACAA,EAAAhR,cAAAzD,EAAAxI,KAAAsK,IAEA9B,EAAA7J,KAAA2L,KAEA,IAAAtB,EAEA,OADAA,GAAA,EACA3H,EAGAuH,GAAA,EACO,MAAA3H,GACP2H,GAAA,EACAD,EAAA1H,SAQAwV,EAAAxS,EAAA2C,QAAAsK,EAAA,SAAA7J,GACAzF,KAAAyF,UACE,CACF8R,UAAA,SAAAzW,GACA,IAAAA,EAAAd,KAAAyF,OACA,OAAA3E,KAAAmS,SAAAnS,IAAAoS,WAIA,SAAAuG,EAAAnT,EAAAzI,EAAAkY,GACA,KAAAzP,aAAA4D,GAGA,OAAA6L,EAAA5L,KAAAtM,GAFAqM,EAAAnN,KAAAuJ,EAAAzI,GAgBA,IAAA4d,EAAA,CACAzV,MAAA,SAAAM,EAAAF,GACA,OAAAA,GAEAsM,QAAA,SAAA7U,EAAAuI,GAEA,OAAAA,EAAA1B,IAAA,SAAAgX,EAAA9e,GACA,OAAA8e,EAAAjK,IAAA5T,EAAAjB,QAKA,SAAA+e,EAAA3G,EAAAuC,GAGA,GAAAvC,aAAArP,MAAA,CACA,IAAAiW,EAAA,mBAAArE,EACA,OAAAvC,EAAApT,OAAA,GAAAga,EAEA,IAAAtM,EAAA0F,EAAA,GAAA4G,EAAArE,EAAAkE,EAAAzG,GAAA4G,GAEA,IAAAtF,EAAA,IAGA,GAAArQ,UAAArE,OAAA,EAEA,WAAA0N,EAAArJ,UAAA,GAAAwV,EAAAxV,WAAA,GAAA2M,GAAA0D,GAEA,oBAAAtB,EAAA,CAEA,IAAA6G,EAAA,GACAC,EAAA,GACA,QAAA3d,KAAA6W,EACA6G,EAAA5Z,KAAA9D,GACA2d,EAAA7Z,KAAA+S,EAAA7W,IAEA,WAAA+L,EAAA,SAAAoL,GAEA,IADA,IAAAyG,EAAA,GACAnf,EAAA,EAAmBA,EAAA0Y,EAAA1T,OAAoBhF,IACvCmf,EAAAF,EAAAjf,IAAA0Y,EAAA1Y,GAEA,OAAAmf,IACI/V,MAAA,KAAA8V,GAEJ,UAAApN,UAAA,kCAmBA,SAAAsN,EAAA9a,EAAA/D,EAAAwR,GACA,yBAAAzN,EAAArD,MACA,CACAA,MAAAmZ,EAAArI,EAAAxR,IAGA+D,EAGA,SAAA8V,EAAArI,EAAAxR,GAIA,IAAA8e,EAAAtN,EAAAxR,GAAA,WACA,IAAAmJ,EAAAqI,EAAAxC,IAAAnM,MACA,OAAAsG,EAAAnJ,GAAA6I,MAAAM,EAAAL,YAQA,OANAgW,EAAA9P,IAAA,SAAA5E,GACA,IAAAjB,EAAAqI,EAAAxC,IAAA5E,GACA,kBACA,OAAAjB,EAAAnJ,GAAA6I,MAAAM,EAAAL,aAGAgW,EAYA,IAAAlN,EAAA,CACA5R,KAAA,kBACA+e,YAAA,sGACAhX,YAAA,CACA2J,YAAA,SAAAhG,EAAA8F,GACA,OAAAA,EAAA7C,kBAGAqQ,SAAA,WACA,WAGA,SAAAC,EAAAzN,EAAApH,GACA,IAAAA,EACA,OAAAoH,EAAA7C,gBAEA,IAAAxF,EAAAiB,EAAAiE,QAAAmD,GAKA,OAJApH,EAAAqE,cACArE,EAAAqE,YAAA,IAAAnH,GAEA8C,EAAAqE,YAAAvK,IAAAsN,EAAArI,GACAA,EAKA4D,EAAAkC,QAAA,SAAAmB,GAEA,OAAA6O,EAAApc,KAAAuH,GAAA6E,QAAAmB,IAEArD,EAAA7J,KAAA,SAAAyC,EAAAoB,GAEA,OAAAkY,EAAApc,KAAAuH,GAAAlH,KAAAyC,EAAAoB,IAEAgG,EAAAuD,SAAA,SAAAG,GAEA,OAAAwO,EAAApc,KAAAuH,GAAAkG,SAAAG,IAEA1D,EAAAuH,IAAA,SAAA5T,GAEA,OAAAue,EAAApc,KAAAuH,GAAAkK,IAAA5T,IAEAqM,EAAAiC,IAAA,SAAAtD,GAOA,IAAAvC,EANA,aAAAuC,EACA,iBAAAA,EAWA7I,KAAAkR,WAAA/E,IAAAtD,IAVAA,EAAA/H,SAAA+H,EAAA3D,YAAA2J,cAEAhG,IAAA/H,SAGAwF,EAAA,IAAAsC,EAAAC,GAAA2C,QAAAxL,SACAsG,EAAAuC,UACAvC,EAAAuC,WAMAvC,GAAAtG,KAAA8L,iBAEA9L,KAAA8L,iBAGA5B,EAAAwL,KAAA,SAAA7X,GACA,GAAAA,GAAA,iBAAAA,EAAA,CAEA,IAAA+N,EAAA5L,KAAA4L,cAAA5L,KAAA4L,YAAA,IAAAvJ,EAAAzC,SACA0G,EAAAsF,EAAAnO,IAAAI,GAIA,OAHAyI,GACAsF,EAAAvK,IAAAxD,EAAAyI,EAAA,IAAAtG,KAAAnC,IAEAyI,EAGA,WAAAtG,KAAAnC,IAGAqM,EAAApB,SAAA,SAAAhI,GACA,IAAAwF,EAAA8V,EAAApc,KAAAuH,GAEA,OADAjB,EAAAwC,SAAAhI,GACAwF,GAEA4D,EAAAiE,aAAA,SAAArN,GACAd,KAAA8L,gBAAAqC,aAAArN,IAEAoJ,EAAAgK,gBAAA,WACA,OAAAlU,KAAAmU,cAEAjK,EAAAkF,QAAA,SAAAyB,EAAAE,GACA,OAAAqL,EAAApc,KAAAuH,GAAA6H,QAAAyB,EAAAE,IAEA7G,EAAAyI,WAAAwG,EAGA,kGAAA5W,QAAA,SAAApF,GACA+M,EAAA/M,GAAA,WACA,OAAA6C,KAAAkR,WAAA/T,GAAA6I,MAAAhG,KAAAkR,WAAAjL,YAGAqQ,EAAAnZ,GAAAmZ,EAAA9X,UAAArB,KAGA+M,EAAA8D,QAAA,SAAAnQ,GACA,OAAAqM,EAAAC,KAAA,CAAwB6D,QAAAnQ,KAGxB,IAAAwe,EAAA,CACA5e,IAAA,SAAAqD,EAAA3D,GACA,IAAAU,EAAAiD,EAAA3D,GACA,OAAAU,IAAAwJ,EAAAvG,EAAAvC,SAAApB,GAAAU,GAEAwD,IAAA,SAAAP,EAAA3D,EAAAU,GACA,IAAA8T,EAAA7Q,EAAA3D,GAOA,OANAwU,KAAAF,IAEAE,EAAAF,IAAA5T,GAEAiD,EAAAO,IAAAlE,EAAAU,IAEA,GAEAgC,IAAA,SAAAiB,EAAA3D,GACA,OAAAA,KAAA2D,GAAA3D,KAAA2D,EAAAsL,WAEAkQ,eAAA,SAAAxb,EAAA3D,GACA,OAAAkf,EAAAhb,IAAAP,EAAA3D,EAAAkK,IAEAkV,QAAA,SAAAzb,GACA,OAAAxD,OAAA4Y,oBAAApV,EAAAsL,aAsCA,SAAAoQ,KAqBA,SAAAC,MAwBA,SAAAjG,GAAA3Y,GACA,OAAA4b,EAAAzZ,KAAA,iBAAAnC,OAAAwJ,EAAAxJ,EAAA0U,OAAA1U,GAAA2Y,IAGA,SAAAC,GAAA5Y,GACA,OAAA4b,EAAAzZ,KAAA,iBAAAnC,OAAAwJ,EAAAxJ,EAAA6e,OAAA7e,GAAA4Y,IAgCA,SAAAC,GAAA7Y,GACA,OAAA4b,EAAAzZ,KAAA,iBAAAnC,IAAA8e,QAAA9e,GAAA6Y,IAMA,SAAAkG,GAAA/e,GACA,OAAA4b,EAAAzZ,KAAAnC,aAAA8H,MAAA,IAAAtD,EAAAgC,IAAAxG,KAAA+e,IA7HA1S,EAAAgI,MAAA,SAAAzM,GAEA,WAAAoX,MAAApX,aAAAzF,KAAAyF,EAAAzF,KAAA0V,KAAAjQ,GAAA4W,IAEA/e,OAAAC,eAAA2M,EAAA,gBACAzM,IAAA,WACA,OAAAuC,KAAA8c,eAEAzb,IAAA,SAAA0b,GACA/c,KAAA8c,eAAAC,IACA/c,KAAA8c,cAAAC,EACAA,EAAA7L,WAAAlR,SAIA1C,OAAAC,eAAA2M,EAAA,cACAzM,IAAA,WACA,OAAAuC,KAAAvB,eAAA,eACAuB,KAAAgd,aAEAhd,KAAAkR,WAAA,IAAAgK,GACAlb,KAAAkR,WAAAjC,OAAA,EACAjP,KAAAkR,aAEA7P,IAAA,SAAA4b,GACAjd,KAAAvB,eAAA,gBAAAuB,KAAAgd,aAAAC,IACAjd,KAAAgd,YAAAC,EACAA,EAAA9I,aAAAnU,SAIAkK,EAAAgT,WA7MA,WAGA,IAFA,IAAA1e,EAAAwB,KAAAxB,UACA2e,EAAA7f,OAAA4Y,oBAAA1X,GACA5B,EAAA,EAAAC,EAAAsgB,EAAAvb,OAA2ChF,EAAAC,EAAOD,IAAA,CAClD,IAAAO,EAAAggB,EAAAvgB,GACAU,OAAAC,eAAAyC,KAAA7C,EAAA6e,EAAA1e,OAAA8B,yBAAAZ,EAAArB,KAAA6C,SAyMAkK,EAAAnN,KAAAqgB,SAAA5e,UAAAzB,KACAmN,EAAAlE,MAAAoX,SAAA5e,UAAAwH,MAIAwW,EAAAa,QAAA,SAAAtH,GACA,SAAAyG,KAeA,OAdAA,EAAAzF,SAAA,SAAAkF,GACA,OACApe,MAAA,WACA,IAAAuI,EAAAH,UAGA,WAAA8P,EAAA,IAAAzG,EAAAtP,KAAA,SAAAnC,GACA,aAAAA,EAAAwJ,EAAAxJ,EAAAoe,GAAAjW,MAAAnI,EAAAuI,OAGAgQ,UAAA,EACAa,cAAA,IAGAuF,GAKAC,GAAA1F,SAAA,SAAAkF,GACA,OACApe,MAAA,WACA,IAAAuI,EAAAH,UAGAyC,EAAA1I,KACA,OAAA8E,EAAA9E,KAAAoM,UAAA,SAAAvO,GACAA,KAAAoe,KACApe,EAAA,IAAA6K,EAAAxD,YAAAoY,UAAAzf,IAEA,IAAA0f,EAAA1f,EAAAoe,GAAAjW,MAAAnI,EAAAuI,GACA,OAAAtB,EAAA4D,EAAA+I,IAAA5T,GAAA,WACA,OAAA0f,OAIAnH,UAAA,EACAa,cAAA,KAYAT,GAAAtM,EAAAC,KAAA,CACAqT,OAAAhB,EAAAa,QAAA7G,IACAiH,WAAAjB,EAAAa,QAAA5G,IACArU,QAAAoa,EAAAa,QAAA5G,IACAiH,YAAAlB,EAAAa,QAAA5G,IACAkH,MAAAnB,EAAAa,QAAA/G,GACAnJ,QAAAqP,EAAAa,QAAA7G,IACAoH,OAAApB,EAAAa,QAAA7G,IACAjH,MAAAiN,EAAAa,QAAA7G,IACAqH,YAAArB,EAAAa,QAAA7G,IACAsH,YAAAtB,EAAAa,QAAA7G,IACArJ,QAAAqP,EAAAa,QAAA7G,IACA5O,SAAA,WACA,OAAA5H,KAAAoM,WAAA,KAGEoK,KACFhY,UAAAyN,KAAA,SACAuK,GAAAG,aAAA,GAEAF,GAAAvM,EAAAC,KAAA,CACA4T,QAAAvB,EAAAa,QAAA7G,IACAwH,cAAAxB,EAAAa,QAAA7G,IACAyH,YAAAzB,EAAAa,QAAA7G,IACA0H,eAAA1B,EAAAa,QAAA7G,KACEC,KACFjY,UAAAyN,KAAA,SACAwK,GAAAE,aAAA,GAKAD,GAAAxM,EAAAC,KAAA,GAA4BuM,KAC5BlY,UAAAyN,KAAA,UACAyK,GAAAC,aAAA,EAKAiG,GAAA1S,EAAAC,KAAA,CACAtK,IAAA,SAAAhC,GACA,OAAAmC,KAAAwS,GAAA,SAAAnR,GACA,OAAAA,KAAAxB,IACAwB,EAAAxB,IAAAhC,MAEAwD,MAAAe,UACAf,EAAAe,QAAAvE,IAAA,IAGI+U,GAAA8D,KAEJnS,IAAAkY,GACA1B,MAAA0B,GACA7B,OAAA6B,IACEG,IACFtf,OAAAC,eAAAqf,GAAApe,UAAA,SACAf,IAAA,WACA,OAAAuC,KAAAme,SAAAne,KAAAme,OAAAne,KAAAwS,GAAAwI,GAAApI,GAAA0D,OAGAsG,GAAAU,UAAAjb,EAAAgC,IAEA,IAAA6W,GAAA7Y,EAAA2C,QAAAsR,EAAA,SAAA4E,EAAArd,GACA,OAAA4b,EAAAzZ,KAAAnC,EAAAqd,IACE,CACF9O,QAAA,SAAArO,GAEA,IAAA4M,EAAApD,EACA6W,EAAA7W,MAAA6C,aAAA,IAAAxB,EACA/K,EAAAqM,EAAA1L,UAAA4N,QAAArP,KAAAiD,KAAAjC,GACAqgB,EAAAlT,WAAAlL,KAAAwK,SACA,IAAAkP,EAAA1Z,KACA,IACA,OAAA8E,EAAAjH,EAAA,SAAAmX,GACA,IAAAjX,MAAA+J,SACA,OAAAkN,EAEA,IAAAA,EACA,SAEA,IAAAb,EAAAuF,EAAAxF,kBAuBA,IArBAC,GAAAuF,EAAAc,aAAAd,EAAA7D,eAAAuI,EAAA5T,UAEAkP,EAAAc,YAAAxF,EAAAtQ,IAAA,SAAA+Q,EAAAjE,GAaA,OAZAiE,aAAAtB,KACAsB,EAAAtB,IAAAjK,EAAA9N,GAAAiiB,SAAA5I,GAAAtB,EAAAuB,KAAAD,IACAnM,SAIAmM,EAAAnM,OAAAoQ,GAEAA,EAAA1K,aACAyG,EAAAtX,IAAAqT,IAGAiE,IAGAiE,EAAA7D,cAAAuI,EAAA5T,SAEAwK,EAAA0E,EAAAc,aAAAzc,EAAAiK,cAAAgN,EACA0E,EAAAC,cAAAD,EAAAE,cAAA5E,EAAA,CAEA,IAAA6E,EAAAH,EAAAG,SACAF,EAAAD,EAAAC,aACAD,EAAAC,aAAA,KACA3E,EAAA0E,EAAAI,KAAAH,GACAE,GACAH,EAAAG,WAGA,OAAA7E,IAEI,QACJrK,GACAA,EAAAO,WAAAkT,EAAA5T,SAEAjD,EAAAoD,IAGApM,SAAA,SAAAJ,EAAAoQ,GACA,GAAAvO,KAAAwa,YAAA,CACA,IAAA8D,EAAAte,KAAAwa,YAAArc,GAEA,OADAmgB,EAAAngB,MACAmgB,EAEA,OAAApU,EAAA1L,UAAAD,SAAAxB,KAAAiD,KAAA7B,EAAAoQ,GAAA,iBAAApQ,GAAA6B,KAAAmU,eAEA/R,QAAA,SAAAsY,GACA,IAAA1F,EAAAhV,KAAAoM,WAAA,GACA+H,EAAAnU,KAAAmU,aACA,GAAAA,EAAA3V,UAAA+f,MAAA,CAEA,IADA,IAAAvb,EAAA0X,KAAA6D,MAAA7D,EAAA6D,QAAA7D,EACA9d,EAAA,EAAAC,EAAAmY,EAAApT,OAAqChF,EAAAC,EAAOD,IAC5C,GAAAoY,EAAApY,GAAA2hB,SAAAvb,EACA,OAAApG,EAGA,SAEA,OAAAoY,EAAA5S,QAAAsY,KAAAtO,cAKA,SAAAoS,GAAA3gB,GACA,OAAA4b,EAAAzZ,KAAA,iBAAAnC,IAAA,IAAAwK,KAAAxK,GAAA2gB,KAEAA,GAAAtU,EAAAC,KAAA,CACAsU,aAAAjC,EAAAa,QAAA7G,IACAkI,aAAAlC,EAAAa,QAAA7G,IACAmI,YAAAnC,EAAAa,QAAA7G,IACAoI,YAAApC,EAAAa,QAAA7G,IACAqI,QAAArC,EAAAa,QAAA5G,IACAqI,QAAArC,IACE+B,KAEFlB,UAAAjV,KAEA,IAAA0W,GAAA1c,EAAA2C,QAAAkF,EAAA,SAAA6U,EAAAlhB,GACA,OAAA4b,EAAAzZ,KAAAnC,EAAAkhB,IACE,CACF3S,QAAA,WACA,OAAApM,KAAAK,UAIAjE,GAAA,CACA4B,YAAA,EACAkM,WACAoM,SACAtI,QAAA9D,EACAsM,WACAC,WACAC,YACAqI,YACAP,SACA5B,QACAtF,OACA6D,oBACA7L,YACA0P,KA9xFA,GA+xFAxX,WACAoB,UACA0Q,OACAvQ,mBACA4S,MACAsD,MA2SA,SAAAnY,EAAAoY,GACA,sBAAApY,EACA,UAAAsE,MAAA,4CAKA,OAHA8T,KAAAxM,UACA5L,EAAA4L,QAAAwM,EAAAxM,SAEA,IAAAyI,EAAArU,IAjTAqY,YAnaA,SAAAzW,EAAAjJ,GACA,IAAA2f,EAAA1W,EAAA0G,QACA1G,EAAA0G,QAAA,WACA,IAAAiC,EAAA+N,EAAApZ,MAAAhG,KAAAiG,WACAoL,EAAApI,QAAAoW,cAAA,SAAAC,GACA7f,EAAAY,KAAAif,MA+ZAC,cAtgBA,SAAAjhB,GAEA,IAAAyD,EAAAoG,EAAA1K,IAAAa,GACA,GAAAyD,EACA,QAAAnF,EAAA,EAAAC,EAAAkF,EAAAH,OAAwChF,EAAAC,EAAOD,IAC/CmF,EAAAnF,GAAA4L,gBAAA,KAAAlK,IAkgBAqJ,eACA6X,aAAA9N,EACA+N,eAeA,WACA,IAAAtP,EAAA,KAAA9H,KAAAC,MAAA,OAIA,OAHA6H,EAAA/H,IACAA,EAAA+H,GAEA/H,KAnBAc,gBACAc,aACAD,eACAf,eAEA1L,OAAAC,eAAAnB,GAAA,kBACAqB,IAAA,WACA,OAAA8J,GAEAlG,IAAA,SAAAsM,GACApG,EAAAoG,KAYA,IAAA+R,GAAArd,EAAA2C,QAAAsK,EAAA,SAAA7J,EAAAwW,KACE,CACF1E,UAAA,WACA,IAAAvC,EAAAhV,KAAAyF,OAAA2G,QAAArE,GACAkU,EAAAjc,KAAAic,OACA,uBAAAA,EAEAjc,KAAAvB,eAAA,WACA,GAAAwd,GAAAlf,KAAAiY,EAAAhV,KAAA2f,QAAAvT,UAAApM,KAAA4f,SACA,GAAA3D,GAAAlf,KAAAiY,EAAAhV,KAAA2f,QAAAvT,WAEA6P,EAAAjH,EAAA,CAAAhV,KAAA2f,QAAAvT,UAAApM,KAAA4f,WAGAC,aAAA,SAAA7K,GACA,IAAAvP,EAAAzF,KAAAyF,OACA0O,EAAA1O,KAAA0O,aACA,OAAAA,EAAAa,EAAAtQ,IAAA,SAAA+Q,EAAA7Y,GACA,IAAAkjB,EAAA3L,EAAAuB,KAAAD,GAEA,OADAqK,EAAA5O,WAAAzL,EACAqa,IACI9K,GAEJzF,MAAA,SAAA5F,EAAA8Q,GACA,OAAA3V,EAAA9E,KAAAoM,SAAA,YAAA4I,GACA,OAAAA,EAAAzF,MAAA5F,EAAA8Q,MAIAvG,gBAAA,WACA,OAAAlU,KAAAyF,OAAAyO,qBAIA,SAAA6L,GAAA9D,EAAA/W,EAAAzC,EAAA4a,EAAA2C,GACA,IAAAC,EAAA5d,EAAA2C,QAAAqY,IAAAzK,GAAA8M,OAAAxa,EAAAzC,GACAwd,EAAAzhB,UAAAyd,SAAAgE,EAAAzhB,UAAAyd,UACA3e,OAAAC,eAAA0iB,EAAAzhB,UAAA,cAAmEX,OAAA,KACnEmiB,KAAA1J,GACA2F,GAAA+D,EAAAxhB,UAAAyd,GAAA,SAAAiE,EAAAC,GACA,IAAA7K,EAAA,IAAA2K,EAAAjgB,MAMA,OALAsV,EAAA7P,OAAAzF,KACAsV,EAAAqK,QAAAO,EACAC,IACA7K,EAAAsK,QAAAO,GAEA7K,GAIAyK,GAAA,kBAAAta,KACE,CACF2J,QAAA,SAAAiC,EAAAN,EAAAD,GACA,IAAAO,KAAA7H,WAAAxJ,MAAAqR,EAAA7H,UAAA6H,EAAA7H,SAAAtE,cAAAlF,KACA,OAAAsP,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,GAEA,IAAAqI,EAAA7R,KAAAwE,kBAAA/L,YACAogB,EAAApgB,KAAA2f,QAAAvT,UACA,eAAAiF,EAAApF,KAiCI,cAAAoF,EAAApF,KAAA,CACJ,IAAA3N,EAAA+S,EAAAxT,MACA2T,EAAA4H,EAAArE,YAAA3S,QAAA9D,GACA0N,EAAA,CAAA1N,GAAA+hB,OAAAD,GAAAxe,OAAA,EACA,GAAA4P,GAAA,GACA,GAAAxF,EACA,OAAA9B,EAAA1L,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,EAAAD,GAEAgE,EAAAsE,EAAA,SAAApE,EAAA+E,GACAA,EAAAvI,EAAA,aAIAxF,GACA8I,EAAAsE,EAAA,SAAApE,EAAA+E,GACAA,EAAA/E,EAAApT,OAAA,GAAAtD,MAKA,OAEA,OAAAgR,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,EAAAD,GApDA,IAFA,IAAAwP,EAAA,GACAC,EAAAlP,EAAA5H,MACA7M,EAAA,EAAmBA,EAAA2jB,EAAA3e,OAAqBhF,IAExCwjB,EAAArjB,KAAAwjB,IAAA3jB,QACA2jB,EAAA/K,aACA8K,EAAAre,KAAAse,EAAA/K,aAAA5Y,IAEA0jB,EAAAre,KAAAse,EAAA3jB,KAIA,IACA+M,EAAAC,EADA4W,EAAAnP,EAAA3H,QAAA2W,OAAAD,GAEA,GAAAI,EAAA5e,OAAA,EAEA,OAAA0N,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAA,IAAAkJ,EAAAmI,IACK,MAAAmP,EAAA5e,OAAA,CAEL,IAAA4e,EAAA,GAAAlX,OAEA,OAAAgG,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAA,IAAAkJ,EAAAmI,IAEA1H,EAAAyP,EAAArE,YAAA3S,QAAAoe,EAAA,IACA5W,EAAA,OAEAD,EAAA0H,EAAA+D,MAAAgE,EAAArE,YAAAnT,OAAA,EACAgI,EAAA,EAEAkL,EAAAsE,EAAA,SAAApE,EAAA+E,GACAA,EAAApQ,EAAAC,EAAA0W,MA2BA/I,UAAA,WACA,IAAAvC,EAAAhV,KAAAyF,OAAA2G,QAAArE,GACAtC,EAAAzF,KAAAyF,OACA6P,EAAA,GACAxS,EAAA9C,KAAA2f,QAAAvT,UACA,OAAAtH,EAAAkQ,EAAA,SAAAA,GACA,IAAAyL,EAAAhb,EAAA2G,UAOA,OANA4I,EAAAzS,QAAA,SAAA1E,EAAA2T,GACA1O,EAAAjF,EAAA2T,IAEA8D,EAAArT,KAAAwe,EAAAjP,KAEKxR,KAAA4f,SACLtK,KAIArT,KAAA,SAAApE,GACA,OAAAmC,KAAAyF,OAAAxD,KAAA+D,MAAAhG,KAAAyF,OAAAQ,YAEA+T,QAAA,SAAAnc,GACA,OAAAmC,KAAAyF,OAAAuU,QAAAhU,MAAAhG,KAAAyF,OAAAQ,YAGAgU,IAAA,SAAApc,GACA,OAAAiH,EAAA9E,KAAAoM,UAAA,SAAA4I,GACA,OAAAA,EAAApT,QAAA5B,KAAAyF,OAAAjE,OAAAwT,IAAApT,OAAA,OAGA8K,MAAA,SAAA7O,GACA,OAAAiH,EAAA9E,KAAAoM,UAAA,SAAA4I,GACA,OAAAA,EAAApT,QAAA5B,KAAAyF,OAAAjE,OAAAwT,EAAA,OAGArS,OAAA,SAAA9E,GACA,UAAAuN,MAAA,sBAEA8I,gBAAA,WACA,OAAAlU,KAAAyF,OAAAyO,oBAEEgH,IACF6E,GAAA,eAAAta,KACE,CACF2J,QAAA,SAAAiC,EAAAN,EAAAD,GACA,IAAAO,KAAA7H,WAAAxJ,MAAAqR,EAAA7H,UAAA6H,EAAA7H,SAAAtE,cAAAlF,KACA,OAAAkK,EAAA1L,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,GAEA,IAAAqI,EAAA7R,KAAAwE,kBAAA/L,YACA,eAAAqR,EAAApF,KACAjM,KAAA2C,OAAAqD,MAAAhG,KAAA,CAAAqR,EAAA1H,MAAA0H,EAAAzH,aAAA2L,OAAAlE,EAAA5H,MAAA/E,IAAA1E,KAAA2f,QAAAvT,kBACI,gBAAAiF,EAAApF,KAAA,CACJ,GAAAjM,KAAAkU,kBACA,OAEA,IAAA5V,EAAA+S,EAAA/H,OAAA8C,UACA4I,EAAAoE,EAAArE,YACAvD,EAAAH,EAAAlT,IASA,GARAkT,EAAAxT,MACA2T,GAAA,EAEAlT,EAAAkT,GAGAA,EAAAwD,KAAAtQ,KAAAsQ,EAAA5S,QAAA9D,KAEAkT,GAAA,GAGA,OAAAlC,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,EAAAD,GAFAsI,EAAAzW,OAAA6O,EAAA,EAAAxR,KAAA2f,QAAAvT,UAAArP,KAAAiD,KAAA4f,QAAA5f,KAAAyF,OAAAlH,SAAAiT,SAII,cAAAH,EAAApF,KAMJ,OAAAqD,EAAA9Q,UAAA4Q,QAAArS,KAAAiD,KAAAqR,EAAAN,EAAAD,GALA,GAAA9Q,KAAAkU,kBACA,UAOEoC,GACFyJ,GAAA,uBACAA,GAAA,4BACAA,GAAA,oBAAyD,GAAIrJ,IAC7DqJ,GAAA,qBAA0D,GAAIrJ,IAC9DqJ,GAAA,oBAAyD,GAAIvJ,IAC7DuJ,GAAA,iBAAAta,EAAAW,KAAuE,CACvE7H,SAAA+Y,EAAA9Y,UAAAD,SACA0d,OAAA,SAAAjH,EAAA5O,GAOA,IANA,IAAAoL,EAAA,IAAA/M,EACAic,EAAAta,EAAA,GACAua,EAAAva,EAAA,GACAwa,EAAA,mBAAAF,EACAG,EAAA,mBAAAF,EACAG,IAAAJ,EACA9jB,EAAA,EAAAC,EAAAmY,EAAApT,OAAoChF,EAAAC,EAAOD,IAAA,CAC3C,IAAA4H,EAAAwQ,EAAApY,GACA4U,EAAAnQ,IACAuf,EAAAF,EAAAlc,EAAAuc,GACAD,EAAAtc,EAAAkc,GAAAlc,EACAqc,EAAAF,EAAAnc,MAEA,SAAAuc,EAAA5iB,EAAAN,GACA2T,EAAAnQ,IAAAlD,EAAAN,GAEA,OAAA2T,KAIAuO,GAAA,mBAAAta,EAAAW,KAAyE,CACzE7H,SAAA+Y,EAAA9Y,UAAAD,SACA0d,OAAA,SAAAjH,EAAA5O,GAOA,IANA,IAAAoL,EAAA,IAAA/M,EACAic,EAAAta,EAAA,GACAua,EAAAva,EAAA,GACAwa,EAAA,mBAAAF,EACAG,EAAA,mBAAAF,EACAG,IAAAJ,EACA9jB,EAAA,EAAAC,EAAAmY,EAAApT,OAAoChF,EAAAC,EAAOD,IAAA,CAC3C,IAAA4H,EAAAwQ,EAAApY,GACAuB,EAAAyiB,EAAAF,EAAAlc,GACAsc,EAAAtc,EAAAkc,GAAAlc,EACAwc,EAAAxP,EAAA/T,IAAAU,GACA6iB,GACAxP,EAAAnQ,IAAAlD,EAAA6iB,EAAA,IAEAA,EAAA/e,KAAA4e,EAAAF,EAAAnc,MASA,OAAAgN,KAIA,IAAAsF,GAAA5M,EAAA4M,uBAAA,SAAAjZ,GACA,IAAAojB,EACA,OACAxjB,IAAA,WACAwjB,IACAA,EAAA,IAAA5e,EAAAzC,SAEA,IAAA8I,EAAAuY,EAAAxjB,IAAAuC,MAIA,OAHA0I,GACAuY,EAAA5f,IAAArB,KAAA0I,EAAA,IAAAyS,EAAAtd,EAAAO,KAAA4B,QAEA0I,GAEAlL,YAAA,IAcA0M,EAAAyR,MACAzR,EAAAtB,UAEA,IAAAsY,QAAA,IAAA5Z,IAAA9K,OAsCA,OArCA0kB,GAAAC,qBAAAD,GAAAC,mBAAA,KAAAlf,KAAA,CACAmf,OAAA,SAAA1Y,EAAA2Y,GACA,GAAA3Y,gBAAAwB,EAAA,CACA,IAAAlI,EAAA1E,OAAAkI,OAAA,GAA+BkD,GAC/B1G,EAAArE,OAAAC,aAAA8K,EAAAxD,YAAA/H,KACA,IAAAmkB,EAAA5Y,EAAA8B,QAAA,UACA,iBAAsB,GACtB,gBAAA9B,EAAAgP,WAAA,gBACA,iBAAAhP,EAAA0D,UAAA,WAA2D9N,OAAAoK,EAAA0D,YAA6B,WAAe,MAAA1D,GACvG,WAAiBpK,OAAA0D,IACjB,WAAgB,MAChB0G,EAAA8B,QAAA,IAAAnC,KAAAiZ,GAAAjZ,KAAAC,MAAAgZ,EAAA,kDACA5Y,EAAA3G,UAAA,gBAEA,aAEAwf,QAAA,SAAAC,GACA,UAEAC,KAAA,SAAA/Y,GACA,IAAA4Y,EAAA5Y,EAAA8B,QAAA,UACA/H,EAAA,UAA8B,UAAY,aAAA6e,GAAA,IAAAjZ,KAAAiZ,GAAApD,mBAC1C,UAAc,eAAAxV,EAAAgP,aACdhP,EAAA0D,WACA3J,EAAAR,KAAA,UAA8B,WAAc3D,OAAAoK,EAAA0D,YAA6B,YACzE1D,EAAA3G,WACAU,EAAAR,KAAA,UAA8B,WAAc3D,OAAAoK,EAAA3G,YAA6B,gBAGzE,IADA,IAAAnF,EAAA,EACA8L,EAAA,UAAA9L,GAAA,MACA6F,EAAAR,KAAA,UAA8B,WAAc3D,OAAAoK,EAAA,UAAA9L,GAAA,OAAyC,QAAY8kB,MAAA,QAAgB,WAAA9kB,EAAA,OACjHA,IAEA,OAAA6F,KAIArG,KAroGgCwC,EAAAoH,MAAA5J,EAAAyC,GAAAD,KAAAvC,EAAAD,QAAA0C,oCCDhC,IAAAoiB,EAGAA,EAAA,WACA,OAAAlhB,KADA,GAIA,IAEAkhB,KAAA,IAAA9D,SAAA,iBACC,MAAA5d,GAED,iBAAAhD,SAAA0kB,EAAA1kB,QAOAH,EAAAD,QAAA8kB,mBCnBA,IAAAtiB,EAAAC,EAAAC,EACCD,EAAO,CAACnC,EAAA,GAAeA,EAAA,SAAsB2K,KAAAvI,EAAA,mBAATF,EAEnC,SAAAyD,EAAAsf,GACF,oBAAAvc,mBAAA,IACAwc,EACA7e,EACAS,EAAA,GACAqe,EAAA,EACAtiB,EAAA8C,EAAA9C,sBACAqJ,EAAA+Y,EAAA/Y,QAEA,SAAAkZ,EAAA5C,GACA,IAAAxW,EAAAwW,EAAAxW,SAMA,GAJA1I,KAAA0I,WACAwW,EAAA6C,WACA/hB,KAAA+hB,SAAA7C,EAAA6C,UAEA7C,EAAA8C,YACAhiB,KAAAgiB,YAAA9C,EAAA8C,gBAEA,KAAA9C,EAAA1a,QAIA,UAAA4G,MAAA,mCAHA,IAAA5G,EAAAxE,KAAAwE,QAAA0a,EAAA1a,SACAA,EAAAyd,kBAAAzd,EAAAyd,gBAAA,KAAAhgB,KAAAjC,MAgBA,GAZAkf,EAAAI,SACAtf,KAAAkiB,gBAAAhD,EAAAI,QAEAJ,EAAAiD,eACAniB,KAAAmiB,aAAAjD,EAAAiD,cAEAjD,EAAAkD,eACApiB,KAAAoiB,aAAAlD,EAAAkD,cAEAlD,EAAAmD,eACAriB,KAAAqiB,aAAAnD,EAAAmD,eAEA,IAAAnD,EAAAoD,cAAA,CACA,IAAA1X,EAAA5K,KAAA4K,gBAAA5K,KAAA0I,SACA1I,KAAA0I,SAAA0D,QAAApM,MAGA4K,EAAA9B,SAAA9I,WACGwE,EACHxE,KAAAkiB,iBAAA,GAGAliB,KAAA0I,SAAAI,SAAA9I,MA4GA,SAAAuiB,EAAArD,GACA4C,EAAA/kB,KAAAiD,KAAAkf,GA4HA,SAAAsD,EAAAtD,GACAA,EAAA/hB,OACA6C,KAAA7C,KAAA+hB,EAAA/hB,MAEAolB,EAAAvc,MAAAhG,KAAAiG,WAmBA,SAAAwc,EAAAvD,GACAA,EAAA/hB,OACA6C,KAAA7C,KAAA+hB,EAAA/hB,MAEAolB,EAAAvc,MAAAhG,KAAAiG,WASA,SAAAyc,EAAAxD,GACAA,EAAA1a,SAAA,WAAA0a,EAAA1a,QAAAme,SAAA,UAAAzD,EAAA/hB,OAEA6C,KAAAoiB,aAAApiB,KAAA4iB,yBAEAH,EAAAzc,MAAAhG,KAAAiG,WAiCA,SAAA4c,EAAA3D,GACAA,EAAA/hB,OACA6C,KAAA7C,KAAA+hB,EAAA/hB,MAEAolB,EAAAvc,MAAAhG,KAAAiG,WASA,SAAA6c,EAAA5D,GACAqD,EAAAvc,MAAAhG,KAAAiG,WAaA,SAAA8c,EAAA7D,GACAlf,KAAAgjB,SAAA9D,EAAA8D,SACAhjB,KAAAijB,SAAA/D,EAAA+D,SACAV,EAAAvc,MAAAhG,KAAAiG,WAwCA,SAAAid,EAAAhE,GACAA,EAAAiE,OACAnjB,KAAAmjB,KAAAjE,EAAAiE,MAEAZ,EAAAvc,MAAAhG,KAAAiG,WAiIA,SAAAmd,EAAA5e,GAEA,GAAAA,EAAAyd,gBAEA,IADA,IAAAoB,EAAA7e,EAAAyd,gBACArlB,EAAA,EAAiBA,EAAAymB,EAAAzhB,OAAsBhF,IAAA,CACvC,IAAA8G,EAAA2f,EAAAzmB,GACA8G,EAAAgF,SAAAyF,aAAAzK,IAgBA,OAjhBAoe,EAAAtjB,UAAA,CACA0G,YAAA4c,EACAtX,QAAA,EACA1B,UAAA,EACAoZ,gBAAA,WACA,UAAA9W,MAAA,iEAEAgE,QAAA,SAAAyB,EAAAE,EAAAxJ,GACA,IAAAvH,KAAAsjB,YAAA,CACA,GAAAtjB,KAAAgiB,YAAA,CACAhiB,KAAA0I,SAAA,IACA4a,EAAAtjB,KAAAsjB,cAAAtjB,KAAAsjB,YAAA,IAAAjhB,EAAAgC,KACArE,KAAAgiB,cAAAzf,QAAA,SAAAiC,GACAqM,EAAA3E,aAAA2E,EAAA3E,WAAA1H,IACA8e,EAAA/e,IAAAC,UAQAxE,KAAAsjB,aAAA,EAEAtjB,KAAAujB,iBACAvjB,KAAAujB,eAAAC,YAAA,EACAxjB,KAAAujB,eAAA,MAEA,IAAA7f,EAAA1D,MACA6Q,EAAA5H,QAAAoW,eAAA9f,GAAA,YACA,IAAAmE,EAAA4f,YACA5f,EAAAwe,gBAAAxe,EAAA2e,aAAA3e,EAAAc,SACMd,EAAA4f,aACN5f,EAAA4f,YAAA/gB,QAAA,SAAAiC,GACAd,EAAAwe,gBAAAxe,EAAA2e,aAAA7d,SAMA6F,cAAAzB,EAAApK,UAAA6L,cACAa,WAAA,aAGAd,WAAA,WACA,WAAAxB,EAAA5I,KAAAwE,SAAA,IAEAuH,kBAAA,SAAA7B,GACA,OAAAtB,EAAApK,UAAAuN,kBAAAhP,KAAAiD,KAAAkK,IAGAsB,QAAA,SAAAtB,GACA,OAAAlK,KAAA4K,eAAAhC,EAAApK,UAAAgN,QAAAzO,KAAAiD,KAAAkK,IAIAe,MAAA,aAGAwY,eAAA,SAAAlc,GACA,UAEAmc,kBAAA,SAAAlf,GACAod,IACAA,EAAA,IAAAhiB,QAAA,qBAEA,IAAA+jB,EAAA/B,EAAAnkB,IAAA+G,GACAod,EAAAvgB,IAAAmD,EAAAmf,EAAA,IACAA,EAAA3gB,MACA2gB,EAAA3gB,KAAA,GAEAD,IACAV,EAAAuhB,UAAAC,cACA9gB,GAAA,GAEA,IAAAW,EAAA1D,KACAwD,EAAAvB,KAAA,WACAyB,EAAA4f,aAAA,EACA5f,EAAAogB,cAAAtf,MAGA+Z,MAAA,WACA,OAAAve,KAAAgD,KAAAhD,KAAAgD,GAAA6e,MAEAkC,KAAA,YACA/jB,KAAA4K,gBAAA5K,KAAA0I,UACAyF,aAAAnO,MACAA,KAAAgkB,YACAhkB,KAAAgkB,WAAA,EACAhkB,KAAAikB,aAAA,IAGAxZ,QAAA,WACAzK,KAAAkiB,iBAAA,IAEAgC,eAAA,SAAAxgB,GACA,OAAAA,EAAAwB,cAAAlF,KAAAkF,aAAAxB,EAAAvG,OAAA6C,KAAA7C,OAGAG,OAAAC,eAAAukB,EAAAtjB,UAAA,WACAf,IAAA,WACA,OAAAuC,KAAAwE,WAOA+d,EAAA/jB,UAAAlB,OAAAY,OAAA4jB,EAAAtjB,WACA+jB,EAAA/jB,UAAA2jB,aAAA,SAAA3d,GACA,OAAAY,SAAAqc,KAAAtF,SAAA3X,IAEA+d,EAAA/jB,UAAA8R,WAAA,WACA,OAAAtQ,KAAAwE,SAEA+d,EAAA/jB,UAAA0jB,gBAAA,SAAAiC,EAAA3f,GACA,IAAAA,GAAAxE,KAAAsE,SAAA,CACA,IAAAA,EAAAtE,KAAAsE,SACA,IAAAA,EAAA1C,OAAA,CACA,IAAA5B,KAAA+hB,SAGA,UAAA3W,MAAA,uDAEA,YAJA9G,EAAAc,SAAAgf,iBAAApkB,KAAA+hB,WAMA,QAAAnlB,EAAA,EAAAC,EAAAyH,EAAA1C,OAAsChF,EAAAC,EAAOD,IAC7CoD,KAAAkiB,gBAAAiC,EAAA7f,EAAA1H,QAEG,CACH,IAAAynB,EAAA7f,GAAAxE,KAAAwE,QAEA,GAAA2f,GAAAnkB,KAAAmiB,aAAAkC,GAEArkB,KAAA8jB,cAAAO,OACI,CACJ,IAAArhB,EAAAhD,KAAAue,QACA8E,EAAAgB,EAAAC,gBACAjB,IACAA,EAAAgB,EAAAC,gBAAA,GACAD,EAAAE,WAAA,sBAEAlB,EAAArgB,KACAqgB,EAAArgB,GAAAhD,SAKAuiB,EAAA/jB,UAAAgmB,WAAA,SAAAhgB,GACAxE,KAAA+hB,SACAvd,EAAA8f,gBAAA,CAAAtkB,MAEAA,KAAAsE,SAAArC,KAAAuC,GAGAxE,KAAA8jB,cAAAtf,IAEA+d,EAAA/jB,UAAAslB,cAAA,SAAAtf,GAEA,GADAxE,KAAAsjB,aAAA,EACAtjB,KAAAikB,YAGA,OAFAjkB,KAAAykB,SAAA,OACAzkB,KAAAoiB,kBAAA/a,EAAA7C,GAGA,IAEA0T,EAEAqL,EAHAmB,EADAlgB,EAAAU,YACAyf,aAEAjhB,EAAAc,IAAAxE,KAAAwE,QAAAxE,KAAA1C,OAAAY,OAAA8B,KAAA,CAAwEwE,QAAA,CAAW3G,MAAA2G,KAqCnF,GAnCAd,EAAA2G,cAAA,WACAkZ,EAAA7f,EAAAgF,SAAArI,KAAA,SAAAxC,GAEA,GADAqa,GAAA,IACAqL,IACAA,IAAA7f,EAAA6f,iBACA7f,EAAA6f,eAAA,MAEAA,EAAAC,aAIA9f,EAAA4f,aAAA,CAIA,GAHA5f,EAAAkH,gBAAAlH,EAAAkH,iBAAAlH,EAAAgF,UACAhF,EAAAkH,eAAAuD,aAAAzK,GAEAghB,EAAA,CACA,IAAAE,EAAAlhB,EAAAkE,WACA8c,EAAAE,KACAF,EAAAE,IAAA,GACAlhB,EAAAkH,eAAAlH,EAAAgF,UAAAI,SAAApF,SAGAA,EAAA2G,cAAA,WACA3G,EAAAkH,eAAAlH,EAAAgF,SAAAI,SAAApF,WAGA2D,IAAAxJ,GAAA6F,EAAA+gB,WACA/gB,EAAA+gB,SAAA,EACA/gB,EAAA0e,aAAAvkB,EAAA2G,MAGI,SAAAnF,GACJe,QAAAf,MAAA,kBAAAqE,EAAArE,QAGA6Y,EAAA,CAEA,GAAAwM,EAAA,CACA,IAAAE,EAAAlhB,EAAAkE,WACA8c,EAAAE,KACAF,EAAAE,IAAA,GACAlhB,EAAAkH,eAAAlH,EAAAgF,UAAAI,SAAApF,SAGAA,EAAA2G,cAAA,WACA3G,EAAAkH,eAAAlH,EAAAgF,SAAAI,SAAApF,KAGA1D,KAAAujB,iBACAvjB,KAAA6kB,eAEA7kB,KAAA6kB,cAAAtB,EAAA/e,KAIA+d,EAAA/jB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACA,UAAA4G,MAAA,+CAEA0W,aACAA,EAAAS,kBAQAC,EAAAhkB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACAgkB,EAAAhkB,UAAAyN,KAAA,oBACAuW,EAAAhkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACA,kBAAAwN,GAAA,MAAAA,EAEAA,EACAxN,EAAAe,aAAAvF,KAAA7C,KAAA,IAEAqH,EAAAsgB,gBAAA9kB,KAAA7C,MAIAqH,EAAAe,aAAAvF,KAAA7C,KAAA6U,IAGA8P,EAAAU,oBAQAC,EAAAjkB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACAikB,EAAAjkB,UAAAyN,KAAA,mBACAwW,EAAAjkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACAA,EAAAxE,KAAA7C,MAAA6U,GAEA8P,EAAAW,mBASAC,EAAAlkB,UAAAlB,OAAAY,OAAAukB,EAAAjkB,WACAkkB,EAAAlkB,UAAAyN,KAAA,wBACAyW,EAAAlkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,IACA,MAAAwN,GAAA,WAAAxN,EAAAyH,MAAAd,MAAA6G,MACAA,EAAA,IAEA,IAAAL,EAAAnN,EAAAxE,KAAA7C,MACA,iBAAAwU,GAAA,iBAAAK,IACAA,EAAA,MAAAA,EAAA,GAAAO,OAAAP,IAEAL,GAAAK,IACAxN,EAAAxE,KAAA7C,MAAA6U,IAGA0Q,EAAAlkB,UAAAokB,wBAAA,SAAA5Q,EAAAxN,GACAA,EAAA3G,MAAAmU,EACAxN,EAAA3G,OAAAmU,GAAAxN,EAAA3G,MAUA2G,EAAAugB,mBAAA1d,GARA7C,EAAAugB,cAAA/S,EACA3P,EAAAC,SAAA,WACAkC,EAAAugB,gBACAvgB,EAAA3G,MAAA2G,EAAAugB,cACAvgB,EAAAugB,mBAAA1d,OAOAya,EAAAY,wBAQAG,EAAArkB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACAqkB,EAAArkB,UAAAyN,KAAA,gBACA4W,EAAArkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACAA,EAAAwgB,MAAAhlB,KAAA7C,MAAA6U,GAEA8P,EAAAe,gBAKAC,EAAAtkB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACAskB,EAAAtkB,UAAAyN,KAAA,kBACA6W,EAAAtkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACAA,EAAAygB,UAAA,QACA5d,IAAA2K,IACAA,EAAA,IAEAxN,EAAA0gB,YAAA9f,SAAA+f,eAAAnT,KAEA8P,EAAAgB,kBAOAC,EAAAvkB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACAukB,EAAAvkB,UAAAyN,KAAA,eACA8W,EAAAvkB,UAAA4Q,QAAA,SAAAyB,EAAAtJ,GACAvH,KAAAgkB,YACA,aAAAnT,EAAA5E,MACAjM,KAAAgkB,WAAA,EACAhkB,KAAAikB,aAAA,IAEAjkB,KAAA0Q,UAAA1Q,KAAA0Q,QAAA,KAAAzO,KAAA4O,IAGA0R,EAAA/jB,UAAA4Q,QAAArS,KAAAiD,KAAA6Q,EAAAtJ,IAEAwb,EAAAvkB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACA,MAAAwN,IACAA,EAAA,IAEAA,EAAA9T,SACA8T,IAAA9T,OAAA,CAA+BoL,OAAA9E,KAE/BwN,EAAAoT,UACAplB,KAAAijB,UAAAjjB,KAAAijB,SAAAoC,YAAA7gB,EAEAA,EAAA8gB,aAAAtT,EAAAhS,KAAAijB,UAEAze,EAAA0gB,YAAAlT,GAEAhS,KAAAijB,SAAAjR,GACGA,aAAArM,OACH3F,KAAAoiB,aAAAc,EAAA1kB,UAAA4jB,aACApiB,KAAAikB,aAAA,EACAjkB,KAAAoiB,aAAApQ,EAAAxN,KAEAxE,KAAAijB,UAAAze,EAAA+gB,WAAAvlB,KAAAgjB,WAAAwC,UAAAxT,GAGA8P,EAAAiB,eAQAG,EAAA1kB,UAAAlB,OAAAY,OAAAqkB,EAAA/jB,WACA0kB,EAAA1kB,UAAA4Q,QAAA,SAAAyB,EAAAtJ,GACAvH,KAAAgkB,YACA,aAAAnT,EAAA5E,MACAjM,KAAAgkB,WAAA,EACAhkB,KAAAikB,aAAA,IAEAjkB,KAAA0Q,UAAA1Q,KAAA0Q,QAAA,KAAAzO,KAAA4O,IAGA0R,EAAA/jB,UAAA4Q,QAAArS,KAAAiD,KAAA6Q,EAAAtJ,IAEA2b,EAAA1kB,UAAAyN,KAAA,eACAiX,EAAA1kB,UAAA4jB,aAAA,SAAApQ,EAAAxN,GACA,IACA2e,EAAAnjB,KAAAmjB,MAAA,SAAA1N,GACA,OAAAA,GAEA4O,EAAArkB,KAAAwE,QACAd,EAAA1D,KACA,GAAAA,KAAAgkB,UA0BG,CACHyB,EAAAzlB,KAAAylB,cAAA,IACA/U,EAAA1Q,KAAA0Q,SAAA,EAAmCzE,KAAA,aAEnCyE,EAAAnO,QAAA,SAAA+c,GACA,gBAAAA,EAAArT,KAAA,CACAvI,EAAAsgB,WAAA,EACA,QAAApnB,EAAA,EAAAC,EAAA4oB,EAAA7jB,OAA8ChF,EAAAC,EAAOD,IACrDynB,EAAAqB,YAAAD,EAAA7oB,IAEA8G,EAAAogB,cAAAO,QACK,eAAA/E,EAAArT,KAAA,CAEL,IADAqT,EAAA3V,MACA/M,EAAA,EAAoBA,EAAA0iB,EAAA1V,YAAwBhN,IAC5CynB,EAAAqB,YAAAD,EAAAnG,EAAA3V,MAAA/M,IAGA,IADA6oB,EAAA9iB,OAAA2c,EAAA3V,MAAA2V,EAAA1V,aACAhN,EAAA,EAAoBA,EAAA0iB,EAAA7V,MAAA7H,OAAyBhF,IAAA,CAC7C,IAAAiB,EAAAyhB,EAAA7V,MAAA7M,GACA+oB,EAAAF,EAAA7oB,EAAA0iB,EAAA3V,OACAic,EAAA9D,EAAA+D,OAAAxB,EAAAyB,EAAAjoB,IACA8nB,GACAtB,EAAA0B,aAAAH,EAAAD,GACAF,EAAA9iB,OAAA/F,EAAA0iB,EAAA3V,MAAA,EAAAic,IAEAH,EAAAxjB,KAAA2jB,SAGKtG,EAAArT,OASLjM,KAAA0Q,QAAA,OA/DA,CACA1Q,KAAAgkB,WAAA,EACAhkB,KAAAikB,aAAA,EACAzf,EAAAygB,UAAA,GACA,IAAAQ,EAAAzlB,KAAAylB,cAAA,GAIA,GAHAtC,EAAA6C,cACA7C,EAAA6C,eAEAhU,EAAA,CACA,IAAAiU,EAAA,SAAAxQ,GACAgQ,EAAAxjB,KAAA6f,EAAA+D,OAAAxB,EAAAyB,EAAArQ,MAEA/M,EAAA1I,KAAA0I,SACAA,EAAAyL,aACAnU,KAAAqK,cAAA,WACA3B,EAAAnG,QAAA0jB,KAGAjU,EAAAzP,QAAA0jB,IAGAjmB,KAAA4K,gBAAA5K,KAAA0I,UACAI,SAAA9I,MA2CA,SAAA8lB,EAAArQ,GACA,IAAAyQ,EASA,OARA/C,EAAAjlB,OACAgoB,EAAA/C,EAAAjlB,OAAA,CAAgCoL,OAAA+a,EAAA8B,MAAA1Q,KAEhCyQ,EAAA/C,EAAA1N,EAAA4O,KACA6B,EAAAhoB,SACAgoB,IAAAhoB,OAAA,CAAyCoL,OAAA+a,EAAA8B,MAAA1Q,KAGzCyQ,IAGApE,EAAAoB,eAEApB,EAAAsE,cAAA,SAAAC,GACA9mB,EAAA,WACAqiB,EAAA,KACA,IAAAtd,EAAA,GAAAiL,MAAAxS,KAAAspB,EAAAC,uBAAA,sBACA,GAAAD,EAAA9B,UAAAniB,QAAA,wBACA,IAAAmkB,EAAA,CAAAF,GACAE,EAAAtkB,KAAA+D,MAAAugB,EAAAjiB,GACAA,EAAAiiB,EAEA,QAAA3pB,EAAA,EAAAC,EAAAyH,EAAA1C,OAAuChF,EAAAC,EAAOD,IAAA,CAC9C,IAAA4H,EAAAF,EAAA1H,GACAymB,EAAA7e,EAAA8f,gBACA,GAAAjB,EAIA,QAAArgB,KAHAwB,EAAA8f,gBAAA,KAEA9f,EAAA+f,UAAA/f,EAAA+f,UAAApX,QAAA,gCACAkW,EAAA,CACA,IAAA3f,EAAA2f,EAAArgB,GACAU,EAAAugB,cACAvgB,EAAAugB,aAAA,GACAvgB,EAAAogB,cAAAtf,QAiBAsd,EAAAsB,iBAAA,SAAA5e,EAAAgiB,GACAA,GACApD,EAAA5e,GAGA,IADA,IAAAiiB,EAAAjiB,EAAAkiB,qBAAA,KACA9pB,EAAA,EAAAC,EAAA4pB,EAAA7kB,OAAqChF,EAAAC,EAAOD,IAAA,CAC5C,IAAA+pB,EAAAF,EAAA7pB,GACA+pB,EAAA1E,iBACAmB,EAAAuD,KAIA7E,IArkB8CljB,EAAAoH,MAAA5J,EAAAyC,GAAAD,KAAAvC,EAAAD,QAAA0C,oBCD9C,IAAAF,EAAAC,EAAAC,EACCD,EAAO,CAACnC,EAAA,SAAsB2K,KAAAvI,EAAA,mBAATF,EAEpB,SAAA+iB,GAEF,IAAAjL,EAAAiL,EAAAjL,SACAD,EAAAkL,EAAAlL,QACAmQ,EAAA,GACAC,EAAA,GACA,SAAAC,EAAAC,GAEA,OAAAH,EAAAG,KACAH,EAAAG,GACA,IAAA3J,SAAA,kBAAA2J,IAEA,SAAAC,IAAA/a,EAAA9O,EAAA8pB,EAAAC,EAAAC,EAAAC,GAEA,IAAA1U,EAAA,SAAA2U,EAAAC,GACA,IAEAC,EAFAjN,EAAAgN,EAAA,GACA/M,EAAA+M,EAAA,GAEA,GAAAhN,KAAA7I,IACA,IACA,OAAA6I,EAAA7I,IAAA0V,EAAAE,EAAA9M,KAAAnO,YACK,MAAA/M,GACL,IAAAA,EAAAuS,UAGA,MAAAvS,EAFAkoB,EAAAloB,EAMA,IAAAkb,MAAA9I,IAGA,MAAA8V,KAAAC,QAAAD,EAAA,IAAAnc,MAAA,qDAFAmP,EAAA9I,IAAA2V,EAAAC,EAAA/M,KAAAlO,aAOAqb,EAAA,CACAzhB,MAAA,SAAAM,EAAAF,GASA,OARA8gB,EAAAJ,EAAAI,GACAC,KAAAL,EAAAK,GACAC,KAAAN,EAAAM,GACAF,EAAAxU,UACAmU,EAAAG,GAAAS,EAAA,IAAA9F,EAAAzX,SAAAgd,GAEAQ,EAAAD,GACArhB,EAAAT,MAAAnH,UAAA+Q,MAAAxS,KAAAqJ,GACAqhB,EAAAzhB,MAAAM,EAAAF,KAGA,SAAAshB,EAAAD,GACAA,EAAAR,aACAQ,EAAAE,OAAA,IAAAP,EAEAM,EAAAD,GACAZ,EAAAG,GAAAS,EACAZ,EAAA1pB,GAAA,WACA,IAAAqD,EAAAinB,EAAAzhB,MAAA,KAAAC,WACA,OAAAgG,EAAAzL,EAAAoS,GAAA3G,GAAAzL,GAuBA,OAlBAwmB,EAAA,IAAAvQ,EAAA,2BACAuQ,EAAA,IAAAvQ,EAAA,gCACAuQ,EAAA,IAAAvQ,EAAA,gCACAuQ,EAAA,IAAAvQ,EAAA,8BAEAuQ,EAAA,2FAAoG,SACpGA,EAAA,2EAAqF,QACrFA,EAAA,IAAAtQ,EAAA,sBACAsQ,EAAA,IAAAvQ,EAAA,qBACAuQ,EAAA,IAAAtQ,EAAA,mBACAsQ,EAAA,KAAAtQ,EAAA,2BACAsQ,EAAA,IAAAtQ,EAAA,gBACAsQ,EAAA,KAAAtQ,EAAA,wBACAsQ,EAAA,MAAAtQ,EAAA,yBACAsQ,EAAA,KAAAtQ,EAAA,kBACAsQ,EAAA,IAAAtQ,EAAA,gBACAsQ,EAAA,IAAAtQ,EAAA,eACAsQ,EAAA,OAAAvQ,EAAA,uEACAoQ,IAnF+BjoB,EAAAoH,MAAA5J,EAAAyC,GAAAD,KAAAvC,EAAAD,QAAA0C,qBCD/B,SAAAwI,GAAA,IAAA1I,EAAAC,EAAAC,EAEED,EAAO,CAACnC,EAAA,GAAaA,EAAA,GAAcA,EAAA,GAAcA,EAAA,GAAUA,EAAA,GAAeA,EAAA,GAAcA,EAAA,GAAeA,EAAA,SAAoC2K,KAAAvI,EAAA,mBAATF,EAElI,SAAAmH,EAAA+b,EAAAzD,EAAAuJ,EAAAf,EAAAlF,EAAAtf,EAAAwlB,GAEF,IAAAC,EAAAxqB,OAAAY,OAAA6H,GACA+hB,EAAAF,OACAE,EAAA/hB,UACA1D,EAAAL,KAAA8lB,EAAAnG,GACArkB,OAAAC,eAAAuqB,EAAA,iBAAAxqB,OAAA8B,yBAAAuiB,EAAA,mBACAmG,EAAAzJ,WACAhc,EAAAL,KAAA8lB,EAAA7I,MAAAZ,GACAyJ,EAAAjhB,MAAAxE,EAAAwE,MACAihB,EAAAhjB,KAAAzC,EAAAyC,KACAgjB,EAAAhG,WAAAS,gBACAlgB,EAAAL,KAAA8lB,EAAAhG,GACAzf,EAAAL,KAAA8lB,EAAAjB,GACAiB,EAAAD,oBACAC,EAAA9Z,QAAAqQ,EACA,IAAA0J,EAAA,oBAAAvrB,OAAA8K,EAAA9K,OAIA,OAHAurB,EAAAC,QACA5nB,QAAAyW,KAAA,8GAEAkR,EAAAC,OAAAF,IAtB6IlpB,EAAAoH,MAAA5J,EAAAyC,GAAAD,KAAAvC,EAAAD,QAAA0C,sCCF7I,IAAAF,EAAAC,EAAAC,EACCD,EAAO,CAACnC,EAAA,GAAeA,EAAA,GAAcA,EAAA,SAAsB2K,KAAAvI,EAAA,mBAATF,EAEjD,SAAAyD,EAAAyf,EAAAH,GACF,IAyGAsG,EAzGA/d,EAAAyX,EAAAzX,SAOAge,EAAA,uBACA3hB,EAAAlE,EAAAkE,YACAqC,EAAA+Y,EAAA/Y,QACA6Z,EAAAX,EAAAW,iBACAC,EAAAZ,EAAAY,sBACAF,EAAAV,EAAAU,kBACAK,EAAAxgB,EAAA2C,QAAA8c,EAAAe,cAAA,WACAf,EAAAe,cAAA7c,MAAAhG,KAAAiG,YACE,CACFmc,aAAA,SAAApQ,EAAAxN,GACA,IAAA2jB,EAAAC,EAAApoB,KAAA7C,MACAgrB,EACAA,EAAA3jB,EAAAwN,EAAAhS,KAAA7C,OAEA,GAAA6C,KAAA7C,KAAAiF,QAAA,KACAimB,QAAArD,MAAAhlB,KAAA7C,MAAA6U,EAEAqW,QAAAC,YAAAtoB,KAAA7C,KAAA6U,MAKAuW,EAAA,oBAAAC,gBAAAD,UACA,SAAAE,EAAAriB,EAAAuI,GACA,OAAA8Z,EAAAziB,MAAA1I,OAAAY,OAAAyQ,EAAAnQ,WAAA4H,IAGAhD,EAAAf,EAAAe,gBACAslB,EAAArmB,EAAA2C,QAAA8c,EAAAS,gBAAA,SAAArD,GACAlf,KAAA7C,KAAA+hB,EAAA/hB,KACA2kB,EAAA9b,MAAAhG,KAAAiG,YACE,CACFmc,aAAA,SAAApQ,EAAAxN,GACA,IAAAmkB,EAAAnkB,EAAA+f,UACAqE,EAAA5oB,KAAA7C,KAGAuM,EAAAif,IAAA,IAAAA,EAAA,KAAAxb,QAAA,IAAAyb,EAAA,UAGAA,EAFA5W,EAEA2W,GAAAjf,EAAAkf,GAAArZ,MAAA,GAAAqZ,EAGAlf,EAAA6F,MAAA,EAAA7F,EAAA9H,OAAA,KAGA+mB,IACAnkB,EAAA+f,UAAAqE,MAIAC,EAAAxmB,EAAA2C,QAAA8c,EAAAS,gBAAA,SAAArD,GACAlf,KAAAyiB,iBAAAvD,EAAAuD,iBACAX,EAAA9b,MAAAhG,KAAAiG,YACE,CACFmc,aAAA,SAAApQ,EAAAxN,GACA,IAAAskB,EAAA,GAEA,QAAA3rB,KAAA6U,EACAhS,KAAAyiB,iBAAAjkB,UAAA4jB,aAAArlB,KAAA,CACAI,QACK6U,EAAA7U,GAAAqH,GACLskB,EAAA7mB,KAAA9E,GAEA,IAAA4rB,EAAA/oB,KAAA+oB,eACA,GAAAA,EAEA,QAAAnsB,EAAA,EAAAC,EAAAksB,EAAAnnB,OAA8ChF,EAAAC,EAAOD,IAAA,CACrD,IAAAO,EAAA4rB,EAAAnsB,GACAO,KAAA6U,GACAhS,KAAAyiB,iBAAAjkB,UAAA4jB,aAAArlB,KAAA,CACAI,aACOkK,EAAA7C,GAIPxE,KAAA+oB,eAAAD,KAKA/F,EAAAjB,EAAAiB,aACAG,EAAApB,EAAAoB,aAEA8F,EAAA,oBAAA5jB,kBAAA,CACAC,cAAA,SAAA4jB,GACA,UAEAC,iBAAA,cAIA5B,EAAA,CACA6B,MAAA,EACAC,SAAA,GAKAljB,GAAA,EACAmjB,EAAAL,EAAA3jB,cAAA,QACAikB,EAAAD,EAAAnkB,YAUA,SAAAqkB,EAAArK,GACA,gBAAA1a,EAAA3G,EAAAM,GACA,iBAAAN,IAEAA,EAAAqhB,EAAArhB,EAAA,MAEA2G,EAAAwgB,MAAA7mB,GAAAN,GAIA,SAAA2rB,EAAAhlB,EAAA3G,EAAAM,GACA,iBAAAN,IACAA,GAAA,MAEA2G,EAAAwgB,MAAA7mB,GAAAN,EAEA,SAAA4rB,EAAAjlB,EAAA3G,EAAAM,GACAqG,EAAAwgB,MAAA7mB,GAAAN,EA1BAwrB,EAAAnkB,YAAA,aACA8jB,EAAA3jB,cAAA,QAAAH,aAAAmkB,EAAAnkB,cAEAmkB,EAAApqB,UAAAiG,YAAAokB,EACApjB,GAAA,EACA7D,EAAA6D,0BAwBA,IAgBAwjB,EAhBAtB,EAAA,CACAuB,QAAAJ,EAAA,aACAK,WAAAL,EAAA,sBACAM,MAAAJ,EACAK,QAAAL,EACAM,KAAAN,EACAO,QAAAP,EACAQ,QAAAR,EACAS,WAAAT,EACAzG,SAAAuG,EAAA,iBACAY,eAAAZ,EAAA,kBACAW,WAAAT,GAEE,0vGAAAlnB,QAAA,SAAAhE,GACF6pB,EAAA7pB,GAAA6pB,EAAA7pB,IAAAirB,IAGA,IAAAY,EAAA,IAAA/nB,EAAAzC,QAEAV,EAAAmD,EAAAnD,eACAH,EAAAzB,OAAAyB,gBAAA,SAAAC,GAAgE,OAAAA,EAAAC,WAChE,SAAAorB,EAAAtI,GACA,IAAA2H,EAAA,CACA,IAAAY,EAAAtB,EAAA3jB,cAAA,SACAilB,EAAA/kB,aAAA,mBAEAyjB,EAAAuB,KAAAxE,aAAAuE,EAAAtB,EAAAuB,KAAAC,YACAd,EAAAY,EAAAG,MAEA,IAAAC,EAAAhB,EAAAgB,UAAAhB,EAAAiB,MACA,OAAAD,EAAAhB,EAAAkB,WAAA7I,EAAA,MAAuD2I,EAAA9oB,SAMvD,SAAAipB,EAAAvhB,EAAAmd,EAAAqE,EAAAC,GAEA,IADA,IAAAC,EAAAvE,EAAA7kB,OAAA,GAAAmpB,EAAA/B,EAAAiC,yBAAA3hB,EACA1M,EAAA,EAAAC,EAAA4pB,EAAA7kB,OAAqChF,EAAAC,EAAOD,IAAA,CAC5C,IACAsuB,EADAvE,EAAAF,EAAA7pB,GAEA,SAAA+pB,EACA,GAAAA,EAAA7d,SAAA,CAEA,IAAAqiB,EAAAxE,EAAAyE,WAAAJ,EAAA1hB,EACA0hB,EAAA9F,YAAAgG,EAAAG,EAAAF,EAAAxE,SACK,sBAAAA,EAEL2E,EAAAhiB,EACA4hB,EAAA,IAAAvE,EACAqE,EAAA9F,YAAAgG,GACAvE,EAAA4E,gBACAT,EAAAU,YAAAN,QAEK,oBAAAvE,EACL,GAAAA,aAAAhhB,MAEAmlB,KAAAxhB,EAEAuhB,GADAK,KAAA5hB,GACAkiB,aAAAN,EAAAvE,EAAAmE,OACM,KAAAnE,EAAAvB,SAKN,UAAAha,MAAA,sBAAAub,GAHAqE,EAAA9F,YAAAgG,EAAAvE,QAOAuE,EAAAlC,EAAA7D,eAAAwB,GACAqE,EAAA9F,YAAAgG,GAWA,OAPAF,GAAA1hB,IACAyhB,EACAzhB,EAAAyc,aAAAiF,EAAA1hB,EAAAkhB,YAEAlhB,EAAA4b,YAAA8F,IAGAE,EAEA,SAAAG,EAAA/hB,EAAAiQ,GACA,SAAAA,EACA,OAAAyP,EAAA7D,eAAA,IAEA,IAAAlC,EACA,GAAA1J,EAAAzQ,SAAA,CACAma,EAAA+F,EAAA7D,eAAA,IACA,IAAAzhB,EAAA,IAAAqf,EAAA,CACAve,QAAA8E,EACA2Z,WACAva,SAAA6Q,IAEA0J,EAAAvf,EAAAuf,cAEAA,EAAA+F,EAAA7D,eAAA5L,GAEA,OAAA0J,EAGA,SAAAwI,EAAAjnB,EAAA3G,EAAAM,GACAN,KAAAiL,UACA,IAAA4Z,EAAA,CACAvlB,KAAAgB,EACAuK,SAAA7K,EACA2G,aAEA8iB,EAAA9iB,EAAAme,UAAA,WAAAne,EAAAme,UACA+I,EAAAlnB,EAAA3G,EAAAM,IAGA,WAAAqG,EAAAme,SAAA,UAAAxkB,EAEAukB,EAAAlkB,UAAAokB,wBAAA/kB,EAAA2G,IAEA,WAAAA,EAAAyH,MACAd,MAAAtN,KACAA,EAAA,IAGA2G,EAAArG,GAAAN,GAKA,SAAA8tB,KACA,IAAAC,EAAA,CACAnF,SAAAkF,EACAhJ,QAAAgJ,EACAE,YAAAF,EACAG,QAAA,SAAAtnB,EAAAsnB,GACA,GAAAA,EAAAhjB,UAAAgjB,EAAAra,IAEA,IAAAoX,EAAA,CACApG,iBAAAiG,EACAlkB,UACAkE,SAAAojB,QALA,CASA,IAAAC,EACA,GAAAD,EAAAlqB,QAAA,EACAmqB,GAAA,MACI,CAEJ,IAAAnvB,EAAA,EACA,QAAAuB,KAAA2tB,EACAA,EAAAlvB,KACAkvB,EAAAlvB,GAAAuB,GAEAvB,IAEAkvB,EAAAlqB,OAAAhF,EAEA,QAAAA,EAAA,EAAAC,EAAAivB,EAAAlqB,OAAsChF,EAAAC,EAAOD,IAAA,CAE7C,IAAA2nB,EAAAuH,EAAAlvB,GACAovB,EAAAF,EAAAvH,GACAyH,KAAAljB,SAEA,IAAA4f,EAAA,CACAlkB,UACArH,KAAAonB,EACA7b,SAAAsjB,KAEKA,GAAAD,KACLvnB,EAAA+f,WAAA,IAAAA,MAIA0H,MAAAC,EACA/f,IAAA+f,EACAC,KAAAD,EACAE,OAAA,SAAA5nB,EAAA3G,EAAAM,EAAAsE,GAIA,IAAAggB,EAAA,CACAtlB,KAAAgB,EACAuK,SAAA,mBAAA7K,EAAA,IAAA8jB,EAAAxG,kBAAAtd,EAAAO,KAAAoG,EAAA/B,IAAA5E,EACA2G,aAGA6nB,QAAAC,EAAA,SAAAta,EAAAxN,EAAArG,GACAA,KAAA6B,KAAA7C,KACA,MAAA6U,SACAxN,EAAA6nB,QAAAluB,GAEAqG,EAAA6nB,QAAAluB,GAAA6T,IAGA1M,WAAAgnB,EAAA,SAAAta,EAAAxN,EAAArG,GACAqkB,EAAAhkB,UAAA4jB,aAAArlB,KAAA,CACAI,KAAAgB,GAAA6B,KAAA7C,MACI6U,EAAAxN,KAEJwgB,MAAA,SAAAxgB,EAAA3G,EAAAM,GACA,iBAAAN,EACA2G,EAAAe,aAAA,QAAA1H,GACIA,KAAAiL,SACJ,IAAA0Z,EAAA,CACArlB,KAAA,QACAuL,SAAA7K,EACA2G,YAGA+nB,EAAA/nB,EAAA3G,EAAAM,IAGAgoB,MAAA,SAAA3hB,EAAA3G,IAgsCA,SAAA2G,EAAA2S,EAAA7Q,GACA,IAAAkmB,EAAAhoB,EAAAU,YACAyG,EAAA6gB,EAAA7gB,eAAA6gB,EAAA7gB,aAAA,IAAAtJ,EAAAzC,SACAgM,EAAAD,EAAAlO,IAAA0Z,GACAvL,GACAD,EAAAtK,IAAA8V,EAAAvL,EAAA,IAAAvJ,EAAAzC,UAEA4E,EAAAioB,iBAAAjoB,EAAAioB,eAAA,IAAApqB,EAAAzC,UACAyB,IAAA8V,EAAA7Q,GACAsF,EAAAvK,IAAAmD,EAAA8B,GAxsCAomB,CAAAloB,EAAA3G,EAAAqH,YAAArH,KA7VA,CACA,cACA,6BACA,mIACA,8BA6VA0E,QAAA,SAAAhE,GACAqtB,EAAArtB,IAAA,IAEA,oBAAAouB,cACAA,YAAAnuB,UAAAouB,kBAAAhB,GAEA,IAAAiB,EAAA,CACAC,MAAAzqB,EAAAL,KAAA,+dACAnE,MAAA4tB,EACAsB,cAAAtB,EACAuB,YAAAvB,EACAwB,QAAAxB,EACAxf,KAAA,SAAAzH,EAAA3G,GACA,IACA2G,EAAAyH,KAAApO,EACK,MAAA2B,QAKL0tB,OAAA7qB,EAAAL,KAAA,uEACAnE,MAAA4tB,IAEA0B,SAAA9qB,EAAAL,KAAA,uJACAnE,MAAA4tB,IAEAnR,EAAA,qFACA8S,KAAA,qGACAC,OAAA,4GACAC,QAAA,SACAC,OAAA,SACAC,MAAA,sBACAC,SAAA,2BACAC,KAAA,qGACAC,MAAA,yCACAC,SAAA,gBACAC,OAAA,sFACAC,IAAA,0FACAC,OAAA,iCACAC,SAAA,UACA3G,OAAA,2DACA4G,MAAA,YACAC,GAAA,sBACAC,GAAA,sBACAC,OAAA,8DACApJ,MAAA,iBACAqJ,MAAA,iCACAC,KAAA,mFACAC,KAAA,wCACAC,MAAA,6CACAC,SAAA,2BACAC,IAAA,oBACAC,IAAA,oBACAlpB,OAAA,wCACAmpB,MAAA,0FACAC,OAAA,0DACAvwB,OAAA,uHACAwwB,MAAA,qCAGA,SAAA5C,EAAA1nB,EAAA3G,EAAAM,GACAN,KAAAiL,SACA,IAAA0Z,EAAA,CACArlB,KAAAgB,EACAuK,SAAA7K,EACA2G,YAGAA,EAAAe,aAAApH,EAAAN,GAIA,IAAA0uB,EAAAD,EAAA,SAAAta,EAAAxN,EAAArG,IAEA,IADAA,KAAA6B,KAAA7C,MACAiF,QAAA,KACAoC,EAAAwgB,MAAA7mB,GAAA6T,EAEAxN,EAAAwgB,MAAAsD,YAAAnqB,EAAA6T,KAGA,SAAAsa,EAAA5oB,GACA,IAAAqrB,EAAA1sB,EAAA2C,QAAAyd,EAAA,SAAAvD,GACAuD,EAAAzc,MAAAhG,KAAAiG,YACG,CACHmc,aAAA1e,IAEA,gBAAAc,EAAA3G,EAAAM,GACA,GAAAN,EAAAiL,UAAAjL,EAAA4T,IACA,IAAAoX,EAAA,CACApG,iBAAAsM,EACArmB,SAAA7K,EACA2G,iBAIA,QAAAwqB,KAAAnxB,EAAA,CACA,IAAAoxB,EAAApxB,EAAAmxB,GACAC,KAAAnmB,SACA,IAAAimB,EAAA,CACA5xB,KAAA6xB,EACAtmB,SAAAumB,EACAzqB,YAGAd,EAAAurB,EAAAzqB,EAAAwqB,KAMA,SAAAE,EAAA1qB,EAAA/B,GACA,IAAAmpB,EAAApnB,EAAAooB,kBACA7mB,EAAAvB,EAAAU,YACA,QAAA/G,KAAAsE,EAAA,CACA,IAOA0sB,EAPAtxB,EAAA4E,EAAAtE,GACAixB,EAAArpB,EAAA5H,GACA,mBAAAixB,KAAAtmB,UAAAsmB,IAAAvxB,IACAqZ,GAAAnR,EAAAqpB,GAEAA,EAAAjjB,IAAA3H,GAAAiN,IAAA5T,IAGA,IAAAwxB,EAAAzD,EAAAztB,GACAkxB,GACA,IAAAA,EACAxxB,KAAAiL,SAEA,IAAA2Z,EAAA,CACAtlB,KAAAgB,EACAuK,SAAA7K,EACA2G,YAGAA,EAAArG,GAAAN,EAGAwxB,EAAA7qB,EAAA3G,EAAAM,EAAAsE,IAEI0sB,EAAA/G,EAAAjqB,IACJN,KAAAiL,SACA,IAAA+Z,EAAA,CACA1lB,KAAAgB,EACAuK,SAAA7K,EACA2G,YAGA2qB,EAAA3qB,EAAA3G,EAAAM,GAEI,mBAAAN,GAAA,OAAAM,EAAAoR,MAAA,MAEJ,OAAA/K,EAAArG,IAAAqG,EAAA,oBAAArG,KAEAqG,EAAA,oBAAArG,IAAA,EACAqG,EAAA0kB,iBAAA/qB,EAAAoR,MAAA,YAAA8B,GACArR,KAAA,KAAAqR,EAAApF,MAAAoF,MAGA7M,EAAArG,GAAAN,GACI,MAAA2G,EAAArG,GAGJqG,EAAArG,GAAAN,EAGAP,OAAAC,eAAAiH,EAAArG,EAAA,CACAN,QACAL,YAAA,EACAyZ,cAAA,EACAb,UAAA,KAmCA,SAAAkZ,EAAA9qB,EAAA+U,EAAApb,EAAAsE,GACA,IAAA0gB,EAAA3e,EAAA2e,MAAA1gB,EAAA0gB,KACA,GAAAA,GAAA5J,EAkBA,GAhBA4J,EAAAjlB,SACAilB,EAAA6C,aAAA,WACA9O,GAAAiM,EAAA7J,GAAA,SAAA9U,GACA,IAAA+qB,EAAAjW,GAAA5D,KAAAlR,EAAA2hB,OACA,OAAAoJ,IAEA,IAAAxS,EAAAxD,EAAArF,iBAAAqF,EAAArF,kBACA6I,GAEA7F,GAAAiM,EAAApG,EAAA,SAAAvY,GACA,IAAA+qB,EAAAxS,EAAArH,KAAAlR,EAAA2hB,OACA,OAAAoJ,MAKAhW,EAAAzQ,SACA,IAAAoa,EAAA,CACAC,OACAza,SAAA6Q,EACA/U,gBAEI,CACJ,IAAAwmB,EAAAhC,EAAAiC,yBACA9H,EAAA6C,cACA7C,EAAA6C,eAEAzM,EAAAhX,QAAA,SAAAkT,GACA0N,EAAAjlB,OACAgoB,aAAA/C,EAAAjlB,OAAA,CAAkCoL,OAAA9E,EAAA2hB,MAAA1Q,IAElCyQ,aAAA/C,EAAA1N,EAAAjR,GAEAwmB,EAAA9F,YAAAgB,gBAEA1hB,EAAA0gB,YAAA8F,QAEG1D,EAAA9iB,EAAAme,SAsDH,SAAAne,EAAA+U,GACA,IAAAiW,EAAAhrB,EAAAyH,KACAwjB,EAAAD,IAAA,CAAoCE,KAAA,EAAAC,SAAA,EAAAC,KAAA,GACpC,2BAAAJ,GAAA,UAAAA,EACA,kBAEAjW,KAAAzQ,UAEA,IAAA4Z,EAAA,CACAha,SAAA6Q,EACApc,KAAAsyB,EACAjrB,YAGAknB,EAAAlnB,EAAA+U,EAAAkW,EAAAI,IAGArrB,EAAAirB,GAAAlW,EArEAuW,CAAAtrB,EAAA+U,GACGA,aAAA5T,MAGHklB,EADArmB,IAAAgnB,aAAAhnB,EACA+U,EAAA/U,GACG,mBAAA+U,KAAApN,IAGH0e,EADArmB,IAAAgnB,aAAAhnB,EACA,CAAA+U,GAAA/U,GAGAA,EAAA0gB,YAAAmG,EAAA7mB,EAAA+U,IAIA,SAAAmS,EAAAlnB,EAAAkE,EAAAvK,EAAA0xB,GACAxtB,EAAAC,SAAA,WAEA,IADA,IAAAytB,EAAAvrB,EAAAurB,aAAA,2BACAnzB,EAAA,EAAAC,EAAAkzB,EAAAnuB,OAA0ChF,EAAAC,EAAOD,IACjD4H,EAAA0kB,iBAAA6G,EAAAnzB,GAAA,SAAAyU,GACA,IAAAxT,EAAA2G,EAAArG,GACA,IAAAyK,EAAApE,GAAA6F,cAAA,WACA,IAAA7J,EAAAkI,EAAA+I,IAAAoe,IAAAhyB,EAAA2G,GAAA3G,GACA,GAAA2C,IAAAmhB,EAAA3C,KACA,UAAA5T,MAAA,gCAqBA,SAAAykB,EAAAhyB,EAAA2G,GACA,gBAAAA,EAAAyH,KACA+jB,WAAAnyB,GAEAA,EAwBA,SAAAoyB,EAAAlqB,EAAAlI,EAAAM,EAAAsE,GACA,IAAAgR,EAAAhR,EAAAtE,GACA,GAAAsV,EACA,QAAAub,KAAAnxB,EACA4V,EAAAub,GAAAnxB,EAAAmxB,QAGAvsB,EAAAtE,GAAAN,EAhDAmrB,EAAAE,iBAAA,iBAAA7X,GACA,IAAAvQ,EAAAuQ,EAAAvQ,OACA,aAAAA,EAAAmL,KAEA,IADA,IAAAikB,EAAAlH,EAAA5E,iBAAA,qBACAxnB,EAAA,EAAAC,EAAAqzB,EAAAtuB,OAAqChF,EAAAC,EAAOD,IAAA,CAC5C,IAAAuzB,EAAAD,EAAAtzB,GACAuzB,EAAAhzB,OAAA2D,EAAA3D,MAAAgzB,IAAArvB,GACAqvB,EAAAC,cAAA,IAAAC,MAAA,wBA6CA,IAoMA/E,EApMAgF,EAAA,CACAxE,QAAAmE,EACApE,YAAAoE,EACA5D,QAAA4D,EACA3qB,WAAA2qB,EACAjL,MAAAiL,EACA/Y,OAAA,SAAAnR,EAAAlI,GACAqZ,GAAAnR,EAAAlI,IAEA4oB,SAAA,SAAA1gB,EAAAlI,GACAkI,EAAA0gB,SAAA5oB,GAEA0yB,OAAA,SAAAxqB,EAAAlI,GACAkI,EAAAwqB,OAAA1yB,IAIA,SAAA2yB,EAAAzY,EAAAhS,GACA,IAAA0qB,EAAA1qB,EAAA2qB,eACA,GAAA3Y,GAAA,iBAAAA,EACA,GAAAA,aAAApS,OAAAoS,EAAAjP,SACA2nB,EAAAlX,QAAAxB,OAEA,QAAA5Z,KAAA4Z,EAAA,CAOA,IAAAla,EAAAka,EAAA5Z,GACAixB,EAAArpB,EAAA5H,GACA,mBAAAN,EACAA,EAAAiL,UACAjL,IAAAqM,IACArM,EAAAqM,KAGAnE,EAAA5H,GACAb,OAAAC,eAAAwI,EAAA5H,EAAA,CACAN,QACAL,YAAA,IAGAuI,EAAA5H,GAAAN,GAEO0I,EAAA1I,KACP,SAAAM,EAAAoR,MAAA,OACApR,IAAAoR,MAAA,KAEAkhB,EAAA5E,cAAA4E,EAAA5E,YAAA,KAAoE1tB,GAAAN,GAE9DA,KAAAiL,WAEN/C,EAAA5H,GACAb,OAAAC,eAAAwI,EAAA5H,EAAA,CACAN,QACAL,YAAA,IAGAuI,EAAA5H,GAAAN,GAGAyyB,EAAAnyB,GACAmyB,EAAAnyB,GAAA4H,EAAAlI,EAAAM,EAAAsyB,GACM,mBAAArB,KAAAtmB,SACN2nB,EAAAtyB,GAAA,IAAAixB,EAAAvxB,GAEA4yB,EAAAtyB,GAAAN,MAIG,uBAAAka,MAAA5L,IACH,UAAAuC,UAAA,sCAEA+hB,EAAAlX,QAAAxB,GAIA,SAAA4Y,EAAAhiB,GACA,GAAAA,EAAAlQ,eAAA,kBACA,OAAAkQ,EAAA+hB,eAGA,GAAA/hB,EAAAE,YAAA,CAGA,IAAA4hB,EAAA9hB,EAAA+hB,eAAA,GACAE,EAAAD,EAAA5xB,EAAA4P,IACA,QAAAxQ,KAAAyyB,EACAH,EAAAtyB,GAAAmyB,EAAAnyB,GAAAb,OAAAY,OAAA0yB,EAAAzyB,IAAAyyB,EAAAzyB,GAMA,IAHA,IACAytB,EADAptB,EAAAmQ,EAAAnQ,UAEAgV,EAAAlW,OAAA4Y,oBAAA1X,GACA5B,EAAA,EAAAC,EAAA2W,EAAA5R,OAAmChF,EAAAC,EAAOD,IAAA,CAC1C,IAAAuB,EAAAqV,EAAA5W,GACA,UAAAuB,EAAAoR,MAAA,iBAAApR,GAAAoI,EAAA/H,EAAAL,IAAA,CACA,GAAA4H,GAAA8qB,4BAAA,OAAA9xB,EAAAP,GAAAL,GACA,UAAAiN,MAAA,4GAEAqlB,EAAAtyB,GAAAK,EAAAL,QACK,eAAAA,EAAAoR,MAAA,MACL,IAAA9G,EAAAtK,EAAA,GAAA2f,cAAA3f,EAAAoR,MAAA,GACAqc,IACAA,EAAAptB,EAAAouB,kBAAAtvB,OAAAY,OAAAM,EAAAouB,oBAEAhB,EAAAnjB,IAAA,EACAnL,OAAAC,eAAAiB,EAAAiK,EAAAqoB,EAAA3yB,KAGA,OAAAsyB,EAEA,YAGA,SAAAK,EAAAC,GACA,IAAArsB,EAAA,IAAArC,EAAAzC,QACA,OACAnC,IAAA,WACA,OAAAiH,EAAA7E,IAAAG,MAAA0E,EAAAjH,IAAAuC,MAAA,MAEAqB,IAAA,SAAAxD,GACA6G,EAAArD,IAAArB,KAAAnC,GACAmC,KAAA+wB,GAAAlzB,KAiBA,SAAAmzB,EAAAjP,EAAAtf,GACA,IAAAsD,EAbA,SAAAH,GACA,IAAAqrB,GAAArrB,EAAAuE,KAEA,GAAA7M,OAAA4B,eACA,KAAA0G,EAAApH,UAAA0G,cAAAU,MAAAnH,eAAA,SACAmH,EAAA7G,EAAA6G,GAGA,IAAAsrB,GAAA,IAAA5zB,OAAA8B,yBAAAwG,EAAA,aAAAwQ,SACA,OAAAhT,EAAAwC,EAAAqrB,GAAA/yB,EAAA8yB,EAAAE,GAIAC,CAAAnxB,MACAA,KAAAmK,MAGAjL,EAAA6G,EAAA/F,MACA+F,EAAA4F,aAAA,OAEA5F,EAAA7H,SACA6H,EAAAoE,KAAA6mB,EACAjrB,EAAAqrB,iBACArrB,EAAAoG,IAAAklB,GACAtrB,EAAAxH,SAAA+yB,GACAvrB,EAAA8I,gBAEA9I,EAAAvH,UAAAwB,KAAAxB,UAEA,IAAAiyB,EAAA1qB,EAAA2qB,eAAA,GACAE,EAAAD,EAAA3wB,MAEA,QAAA7B,KAAAyyB,EACAH,EAAAtyB,GAAAmyB,EAAAnyB,GAAAb,OAAAY,OAAA0yB,EAAAzyB,IAAAyyB,EAAAzyB,GAGA,IAAAvB,EAAA,EACA,oBAAAmlB,EAAA,CACA,IAAAwP,EAAAxP,EAAApE,MAAAuK,GACA,GAAAqJ,EACA,GACA,IAAAvK,EAAAuK,EAAA,GACAp0B,EAAAo0B,EAAA,GACA,KAAAvK,EACAyJ,EAAAlM,UACAkM,EAAAlM,WAAA,IAAApnB,EAEAszB,EAAAlM,UAAApnB,EAGAszB,EAAAztB,GAAA7F,EAEA,IAAAgb,EAAAoZ,EAAA,GACAA,EAAApZ,KAAAwF,MAAAuK,SACKqJ,QAELd,EAAAlX,QAAAwI,EAEAnlB,IAGA,QAAAC,EAAAoJ,UAAArE,OAAgChF,EAAAC,EAAOD,IACvC4zB,EAAAvqB,UAAArJ,GAAAmJ,GAEA,OAAAA,EAGA,SAAA7H,EAAA6jB,EAAAtf,GAEA,IAAAguB,EAAAE,EAAA3wB,MACA,GAAAsrB,EAAA,CACA,IAAAhiB,EAAAgiB,EACAA,EAAA,KAsBA,IAAA9mB,EAAAxE,KAAAwxB,cACAjJ,EAAAvoB,KAAAyxB,mBAAA9E,YAAA1mB,UAAAjG,KAAAwxB,eACAxI,EAAA3jB,cAAArF,KAAA2iB,SACAZ,KAAAzY,SACAA,EAAAyY,EAAAzY,QAEAA,GACA8gB,EAAA/oB,IAAAmD,EAAA8E,GAEA9E,aAAAxE,MAGAd,EAAAsF,EAAAxE,KAAAxB,WAEAgG,EAAAU,aAAAlF,OACAwE,EAAAU,YAAAlF,MAEA,IAAA0xB,EAAAzrB,UAAArE,OAAA,EACA,GAAA8vB,GAAAltB,EAAAmtB,SAAAntB,EAAAotB,MAAA,CAEA,IAAAC,EAAApB,EAEA,QAAAtyB,KADAsyB,EAAA,GACAoB,EACApB,EAAAtyB,GAAAmyB,EAAAnyB,GAAAb,OAAAY,OAAA2zB,EAAA1zB,IAAA0zB,EAAA1zB,GAIA,GAAAuzB,EAAA,CACA,IAAA90B,EAAA,EACA,oBAAAmlB,EAAA,CACAnlB,IACA,IAAA20B,EAAAxP,EAAApE,MAAAuK,GACA,GAAAqJ,EACA,GACA,IAAAvK,EAAAuK,EAAA,GACAp0B,EAAAo0B,EAAA,GACA,KAAAvK,EACAyJ,EAAAlM,UACAkM,EAAAlM,WAAA,IAAApnB,EAEAqH,EAAA+f,UACA/f,EAAA+f,WAAA,IAAApnB,EAEAqH,EAAA+f,UAAApnB,EAIAszB,EAAAztB,GACAytB,EAAAztB,GAAA7F,EAGAqH,EAAAxB,GAAA7F,EAGA,IAAAgb,EAAAoZ,EAAA,GACAA,EAAApZ,KAAAwF,MAAAuK,SACMqJ,QAENd,EAAAlX,QAAAwI,OAEIA,KAAAoE,QAGJ3hB,EAAA2hB,MAAApE,EAAAoE,OAEA,QAAAtpB,EAAAoJ,UAAArE,OAAiChF,EAAAC,EAAOD,IAAA,CACxC,IAAAmb,EAAA9R,UAAArJ,GACA,GAAAmb,GAAA,iBAAAA,EACA,GAAAA,aAAApS,OAAAoS,EAAAjP,SACA2nB,EAAAlX,QAAAxB,OAEA,QAAA5Z,KAAA4Z,EACAuY,EAAAnyB,GACAmyB,EAAAnyB,GAAA6B,KAAA+X,EAAA5Z,KAAAsyB,GAEAA,EAAAtyB,GAAA4Z,EAAA5Z,OAIK,mBAAA4Z,KAAA5L,IACLskB,EAAAlX,QAAAxB,EAAA5L,IAAA3H,GAEAisB,EAAAlX,QAAAxB,GA2BA,OAvBAvT,EAAAmtB,QACAlB,EAAAjsB,EAAAmtB,QAAAlB,MACGA,EAAAkB,UACHlB,IAAAkB,QAAA50B,KAAAyH,EAAAisB,OAGAvB,EAAA1qB,EAAAisB,GAEAA,EAAA5E,aA1dA,SAAArnB,EAAA/B,GACA,IACAqvB,EACAC,EACAC,EAHAC,EAAAxvB,EAAAopB,YAIAD,EAAApnB,EAAAooB,kBACA,QAAAzuB,KAAA8zB,EAAA,CACA,IAAAvpB,EAAA,IAAAiZ,EAAAxG,kBAAA8W,EAAA9zB,GAAAC,KAAAoG,EAAA/B,IACAmpB,EAAAztB,IACA6zB,MAAA,KAA+C7zB,GAAAuK,EAC3C0f,EAAAjqB,IACJ4zB,MAAA,KAA6C5zB,GAAAuK,GAE7CopB,MAAA,KAA+C3zB,GAAAuK,EAG/CopB,GAEA5C,EAAA1qB,EAAAstB,GAEAC,GACA7C,EAAA1qB,EAAAutB,GAEAC,GAEA9C,EAAA1qB,EAAAwtB,GAkcAE,CAAA1tB,EAAAisB,GAGAzwB,KAAAymB,UACAoE,EAAArmB,EAAAxE,KAAAymB,SAAAjiB,GAEAxE,KAAAuwB,QACA1F,EAAArmB,EAAA2tB,aAAA,CAAwCp0B,KAAA,SAAaiC,KAAAuwB,OAAA/rB,GAGrD,MAAAA,EAAA+U,SACA+V,EAAA9qB,IAAA+U,QAAA,EAAAkX,GAEAjsB,EAAAotB,OAAAptB,EAAAotB,MAAAnB,GACAjsB,EAGA,IAAA+K,EAAA,GAAAA,MACA,SAAAsW,GAAAvc,GACA,OAAAtJ,KAAAolB,SACAyF,EAAA7qB,KAAAiG,UAAAjG,MACA6qB,EAAAvhB,EAAAiG,EAAAxS,KAAAkJ,UAAA,GAAAqD,GASA,SAAA8nB,GAAAgB,EAAArsB,GACA,IAAAA,EAAA,CACA,oBAAAqsB,EAKA,OAAAA,EAAAjoB,OAHApE,EAAA/F,KAMA,IAAAqyB,OAAAhrB,IAAAtB,EAAAusB,cAAAvsB,EAAA4c,QAAA5c,EAAAusB,cACAvQ,EAAAqQ,EAAAzU,MAAA,YACAgF,EAAAZ,EAAAqQ,EAAA7iB,MAAA,EAAA6iB,EAAAxwB,QAAAmgB,IAAA,IAAAngB,QAAAwwB,EAMA,GALAC,IACAtsB,EAAA4c,WAEA5c,EAAAusB,cAAAD,GAAA,KAEA,iBAAAE,eAAA,CACA,QAAAlrB,IAAA4gB,EAAA,CACA,IAAAuK,EAAA,aACAD,eAAAj2B,OAAA,sBAAAk2B,EAAA,CAA+DC,QAAA,QAC/DxK,GAAA,EACA,IACAM,EAAAmK,eAAA,GAAAF,GACAvK,GAAA,EACK,MAAA5oB,KAEL,IAAAgzB,GAAApK,EACA,KACAliB,EAAAyrB,cAAAe,eAAA90B,IAAAklB,IACAviB,QAAAyW,KAAA,UAAA8L,EAAA,uBAEA4P,eAAAj2B,OAAAqmB,EAAA5c,EAAA,CAA+C0sB,QAAAJ,IAC/CtsB,EAAAyrB,cAAAzrB,EACAssB,IACAtsB,EAAA0rB,kBAAAc,eAAA90B,IAAA40B,IAAArJ,EAAA3jB,cAAAgtB,GAAAntB,cAEK,MAAA7F,GACLe,QAAAyW,KAAAxX,IAOA,OAHA0G,EAAAoE,OACApE,EAAAoE,KAAA6mB,GAEA2B,GAAA5sB,EAAA,CACAgc,WACA6Q,WAAA,IAIA,IAAA7sB,GAAA8sB,GAAA,oBAAAlG,wBAAA,cAEA5mB,GAAAqrB,iBACArrB,GAAAP,OAAA,SAAA1E,EAAA2B,GACA,sBAAA3B,EAEA6vB,EAAA7vB,GACA0vB,EAAA/tB,EAAA3B,OACG,CAGH,IAAAuiB,EAAAviB,EAAAmhB,gBACA6Q,EAAAzP,IAAAzhB,OAAA,EACAstB,EAAApuB,EAAA2B,GAGA,IAFA,IAAAswB,EAAA1P,IAAAzhB,OAAA,EAEAoxB,EAAAF,EAAyCE,EAAAD,EAA4BC,IACrE,QAAAC,EAAA,EAA0BA,EAAAH,EAA8BG,IACxD5P,EAAA4P,GAAA/O,eAAAb,EAAA2P,MACA3P,EAAA4P,GAAAlP,OACAV,EAAA1gB,OAAAswB,EAAA,GAEAA,GAAA,EACAH,IACAC,OAOAhtB,GAAAmtB,OAAA,SAAA1uB,KAIA,CACA,QACA,SACA,QACA,QACA,KACA,IACA,QACA,QACA,WACA,WACA,QACA,QACA,QACA,KACA,QACA,MACA,WACA,KACA,KACA,UACA,MACA,MACA,QACA,SACA,OACA,QACA,SACA,SACA,SACA,IACA,QACA,WACA,MACA,UACA,QACA,IACA,SACA,SACA,WACA,SACA,KACA,MACA,IACA,MACA,QACA,OACA,OACA,MACA,OACA,SACA,QACA,KACA,SACA,QACA,MACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,WACA,QACA,OACA,OACA,WACA,QACA,KACA,OACA,OACA,MACA,IACA,UACA,QACA,OACA,SACA,SACA,aACA,SACA,OACA,OACA,WACA,MACA,UACA,OACA,UACA,MACA,MACA,SACA,UACA,WACA,KACA,KACA,KACA,SACA,SACA,OACA,KACA,OACA,KAiEAjC,QAAA,SAAA4wB,GACA,IAAAC,EACA91B,OAAAC,eAAAwI,GAAAotB,EAAA,CACA11B,IAAA,WACA,OAAA21B,MAAAC,GAAAF,SAKA,SAAA7uB,GACAA,EAAA/B,QAAA,SAAAitB,GACA,IAAA4D,EACA91B,OAAAC,eAAAwI,GAAAypB,EAAA,CACA/xB,IAAA,WAEA,OAAA21B,MAAAP,GAAAS,iBAAA,QAAA9D,EAAA1R,mBAIAxgB,OAAAC,eAAAwI,GAAAypB,EAAA,SACA/xB,IAAA,WACA,OAAAuC,KAAAwvB,QApFA+D,CAAA,CACA,WACA,WACA,SACA,QACA,QACA,OACA,WACA,QACA,QACA,SACA,QACA,SACA,MACA,OACA,MACA,SAEA,IAAAC,GAAA,GACA,SAAAH,GAAA1Q,GAEA,OADAA,IAAA7E,cACA0V,GAAA7Q,KACA6Q,GAAA7Q,GACAkQ,GAAA7J,EAAA3jB,cAAAs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","file":"./index.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"alkali\"] = factory();\n\telse\n\t\troot[\"alkali\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n","(function (root, factory) { if (typeof define === 'function' && define.amd) {\n\tdefine([], factory) } else if (typeof module === 'object' && module.exports) {\n\tmodule.exports = factory() // Node\n}}(this, function () {\n\tvar getPrototypeOf = Object.getPrototypeOf || (function(base) { return base.__proto__ })\n\tvar setPrototypeOf = Object.setPrototypeOf || (function(base, proto) {\n\t\tfor (var key in proto) {\n\t\t\ttry {\n\t\t\t\tif (!base.hasOwnProperty(key)) {\n\t\t\t\t\tif (proto.hasOwnProperty(key)) {\n\t\t\t\t\t\tObject.defineProperty(base, key,\n\t\t\t\t\t\t\tObject.getOwnPropertyDescriptor(proto, key))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbase[key] = proto[key]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch(error) {}\n\t\t}\n\t})\n\tvar hasFeatures = {\n\t\trequestAnimationFrame: typeof requestAnimationFrame != 'undefined',\n\t\tdefineProperty: Object.defineProperty && (function() {\n\t\t\ttry{\n\t\t\t\tObject.defineProperty({}, 't', {})\n\t\t\t\treturn true\n\t\t\t}catch(e) {\n\t\t\t}\n\t\t})(),\n\t\tpromise: typeof Promise !== 'undefined',\n\t\tMutationObserver: typeof MutationObserver !== 'undefined',\n\t\t'WeakMap': typeof WeakMap === 'function'\n\t}\n\tfunction has(feature) {\n\t\treturn hasFeatures[feature]\n\t}\n\n\tfunction SyncPromise(value) {\n\t\tthis.value = value\n\t}\n\tSyncPromise.prototype = {\n\t\tthen: function(onFulfilled, onRejected) {\n\t\t\tif (!onFulfilled) {\n\t\t\t\treturn new SyncPromise(this.value)\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvar result = onFulfilled(this.value)\n\t\t\t\treturn (result && result.then) ? result : new SyncPromise(result)\n\t\t\t} catch(error) {\n\t\t\t\treturn new SyncErrorPromise(error)\n\t\t\t}\n\t\t},\n\t\tcatch: function(handler) {\n\t\t\treturn this.then(null, handler)\n\t\t},\n\t\tfinally: function(handler) {\n\t\t\thandler()\n\t\t\treturn this\n\t\t}\n\t}\n\tfunction SyncErrorPromise(error) {\n\t\tthis.value = error\n\t\tthis.unhandledTimeout = setTimeout(function() {\n\t\t\tconsole.error('Uncaught (in promise)', error)\n\t\t})\n\t}\n\tSyncErrorPromise.prototype = new SyncPromise()\n\tSyncErrorPromise.prototype.then = function(onFulfilled, onRejected) {\n\t\tclearTimeout(this.unhandledTimeout)\n\t\tif (!onRejected) {\n\t\t\treturn new SyncErrorPromise(this.value)\n\t\t}\n\t\treturn SyncPromise.prototype.then.call(this, onRejected)\n\t}\n\t// This is an polyfill for Object.observe with just enough functionality\n\t// for what Variables need\n\t// An observe function, with polyfile\n\tvar observe =\n\t\thas('defineProperty') ?\n\t\tfunction observe(target, listener) {\n\t\t\t/*for(var i in target) {\n\t\t\t\taddKey(i)\n\t\t\t}*/\n\t\t\tlistener.addKey = addKey\n\t\t\tlistener.remove = function() {\n\t\t\t\tlistener = null\n\t\t\t}\n\t\t\treturn listener\n\t\t\tfunction addKey(key) {\n\t\t\t\tvar keyFlag = 'key' + key\n\t\t\t\tif(this[keyFlag]) {\n\t\t\t\t\treturn\n\t\t\t\t}else{\n\t\t\t\t\tthis[keyFlag] = true\n\t\t\t\t}\n\t\t\t\tvar currentValue = target[key]\n\t\t\t\tvar targetAncestor = target\n\t\t\t\tvar descriptor\n\t\t\t\tdo {\n\t\t\t\t\tdescriptor = Object.getOwnPropertyDescriptor(targetAncestor, key)\n\t\t\t\t} while(!descriptor && (targetAncestor = getPrototypeOf(targetAncestor)))\n\n\t\t\t\tif(descriptor && descriptor.set) {\n\t\t\t\t\tvar previousSet = descriptor.set\n\t\t\t\t\tvar previousGet = descriptor.get\n\t\t\t\t\tObject.defineProperty(target, key, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\treturn (currentValue = previousGet.call(this))\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\tpreviousSet.call(this, value)\n\t\t\t\t\t\t\tif(currentValue !== value) {\n\t\t\t\t\t\t\t\tcurrentValue = value\n\t\t\t\t\t\t\t\tif(listener) {\n\t\t\t\t\t\t\t\t\tlistener([{target: this, name: key}])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tenumerable: descriptor.enumerable\n\t\t\t\t\t})\n\t\t\t\t}else{\n\t\t\t\t\tObject.defineProperty(target, key, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\treturn currentValue\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\tif(currentValue !== value) {\n\t\t\t\t\t\t\t\tcurrentValue = value\n\t\t\t\t\t\t\t\tif(listener) {\n\t\t\t\t\t\t\t\t\tlistener([{target: this, name: key}])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tenumerable: !descriptor || descriptor.enumerable\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\t\t// and finally a polling-based solution, for the really old browsers\n\t\tfunction(target, listener) {\n\t\t\tif(!timerStarted) {\n\t\t\t\ttimerStarted = true\n\t\t\t\tsetInterval(function() {\n\t\t\t\t\tfor(var i = 0, l = watchedObjects.length; i < l; i++) {\n\t\t\t\t\t\tdiff(watchedCopies[i], watchedObjects[i], listeners[i])\n\t\t\t\t\t}\n\t\t\t\t}, 20)\n\t\t\t}\n\t\t\tvar copy = {}\n\t\t\tfor(var i in target) {\n\t\t\t\tif(target.hasOwnProperty(i)) {\n\t\t\t\t\tcopy[i] = target[i]\n\t\t\t\t}\n\t\t\t}\n\t\t\twatchedObjects.push(target)\n\t\t\twatchedCopies.push(copy)\n\t\t\tlisteners.push(listener)\n\t\t}\n\tvar queuedListeners\n\tfunction queue(listener, object, name) {\n\t\tif(queuedListeners) {\n\t\t\tif(queuedListeners.indexOf(listener) === -1) {\n\t\t\t\tqueuedListeners.push(listener)\n\t\t\t}\n\t\t}else{\n\t\t\tqueuedListeners = [listener]\n\t\t\tlang.nextTurn(function() {\n\t\t\t\tqueuedListeners.forEach(function(listener) {\n\t\t\t\t\tvar events = []\n\t\t\t\t\tlistener.properties.forEach(function(property) {\n\t\t\t\t\t\tevents.push({target: listener.object, name: property})\n\t\t\t\t\t})\n\t\t\t\t\tlistener(events)\n\t\t\t\t\tlistener.object = null\n\t\t\t\t\tlistener.properties = null\n\t\t\t\t})\n\t\t\t\tqueuedListeners = null\n\t\t\t}, 0)\n\t\t}\n\t\tlistener.object = object\n\t\tvar properties = listener.properties || (listener.properties = [])\n\t\tif(properties.indexOf(name) === -1) {\n\t\t\tproperties.push(name)\n\t\t}\n\t}\n\tvar unobserve = has('observe') ? Object.unobserve :\n\t\tfunction(target, listener) {\n\t\t\tif(listener.remove) {\n\t\t\t\tlistener.remove()\n\t\t\t}\n\t\t\tfor(var i = 0, l = watchedObjects.length; i < l; i++) {\n\t\t\t\tif(watchedObjects[i] === target && listeners[i] === listener) {\n\t\t\t\t\twatchedObjects.splice(i, 1)\n\t\t\t\t\twatchedCopies.splice(i, 1)\n\t\t\t\t\tlisteners.splice(i, 1)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tvar watchedObjects = []\n\tvar watchedCopies = []\n\tvar listeners = []\n\tvar timerStarted = false\n\tfunction diff(previous, current, callback) {\n\t\t// TODO: keep an array of properties for each watch for faster iteration\n\t\tvar queued\n\t\tfor(var i in previous) {\n\t\t\tif(previous.hasOwnProperty(i) && previous[i] !== current[i]) {\n\t\t\t\t// a property has changed\n\t\t\t\tprevious[i] = current[i]\n\t\t\t\t(queued || (queued = [])).push({name: i})\n\t\t\t}\n\t\t}\n\t\tfor(var i in current) {\n\t\t\tif(current.hasOwnProperty(i) && !previous.hasOwnProperty(i)) {\n\t\t\t\t// a property has been added\n\t\t\t\tprevious[i] = current[i]\n\t\t\t\t(queued || (queued = [])).push({name: i})\n\t\t\t}\n\t\t}\n\t\tif(queued) {\n\t\t\tcallback(queued)\n\t\t}\n\t}\n\n\tvar id = 1\n\t// a function that returns a function, to stop JSON serialization of an\n\t// object\n\tfunction toJSONHidden() {\n\t\treturn toJSONHidden\n\t}\n\t// An object that will be hidden from JSON serialization\n\tvar Hidden = function () {\n\t}\n\tHidden.prototype.toJSON = toJSONHidden\n\n\tvar extendClass, constructOrCall\n\ttry {\n\t\t// do this with an eval to avoid syntax errors in browsers that do not support class and new.target\n\t\textendClass = eval('(function(Base){ return class extends Base {}})\\n\\n//# sourceURL=class-extend')\n\t\tvar possibleConstructOrCall = eval('\"use strict\";(function(BaseClass, constructHandler, callHandler, constructClass){ return function Element() { return this instanceof Element ? constructHandler ? constructHandler.apply(new.target || this.constructor, arguments) : constructClass ? Reflect.construct(BaseClass, arguments, new.target || this.constructor) : lang.functionConstruct(BaseClass, arguments, new.target || this.constructor, this) : callHandler.apply(Element, arguments) } })\\n\\n//# sourceURL=construct-or-call')\n\t\t// actually using new.target bombs in Edge, so it is basically unusable\n\t\tnew (possibleConstructOrCall(function() {}, function() {}))()\n\t\tconstructOrCall = possibleConstructOrCall\n\t} catch(e) {\n\t}\n\n\tvar lang = {\n\t\trequestAnimationFrame: has('requestAnimationFrame') ? requestAnimationFrame :\n\t\t\t(function() {\n\t\t\t\tvar toRender = []\n\t\t\t\tvar queued = false\n\t\t\t\tfunction processAnimationFrame() {\n\t\t\t\t\tfor (var i = 0; i < toRender.length; i++) {\n\t\t\t\t\t\ttoRender[i]()\n\t\t\t\t\t}\n\t\t\t\t\ttoRender = []\n\t\t\t\t\tqueued = false\n\t\t\t\t}\n\t\t\t\tfunction requestAnimationFrame(renderer) {\n\t\t\t\t \tif (!queued) {\n\t\t\t\t\t\tsetTimeout(processAnimationFrame)\n\t\t\t\t\t\tqueued = true\n\t\t\t\t\t}\n\t\t\t\t\ttoRender.push(renderer)\n\t\t\t\t}\n\t\t\t\treturn requestAnimationFrame\n\t\t\t})(),\n\t\tSyncPromise: SyncPromise,\n\t\tSyncErrorPromise: SyncErrorPromise,\n\t\tPromise: has('promise') ? Promise : (function() {\n\t\t\tfunction Promise(execute) {\n\t\t\t\tvar isResolved, resolution, errorResolution\n\t\t\t\tvar queue = 0\n\t\t\t\tfunction resolve(value) {\n\t\t\t\t\t// resolve function\n\t\t\t\t\tif(value && value.then) {\n\t\t\t\t\t\t// received a promise, wait for it\n\t\t\t\t\t\tvalue.then(resolve, reject)\n\t\t\t\t\t}else{\n\t\t\t\t\t\tresolution = value\n\t\t\t\t\t\tfinished()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfunction reject(error) {\n\t\t\t\t\t// reject function\n\t\t\t\t\terrorResolution = error\n\t\t\t\t\tfinished()\n\t\t\t\t}\n\t\t\t\texecute(resolve, reject)\n\t\t\t\tfunction finished() {\n\t\t\t\t\tisResolved = true\n\t\t\t\t\tfor(var i = 0, l = queue.length; i < l; i++) {\n\t\t\t\t\t\tqueue[i]()\n\t\t\t\t\t}\n\t\t\t\t\t// clean out the memory\n\t\t\t\t\tqueue = 0\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tthen: function(callback, errback) {\n\t\t\t\t\t\treturn new Promise(function(resolve, reject) {\n\t\t\t\t\t\t\tfunction handle() {\n\t\t\t\t\t\t\t\t// promise fulfilled, call the appropriate callback\n\t\t\t\t\t\t\t\ttry{\n\t\t\t\t\t\t\t\t\tif(errorResolution && !errback) {\n\t\t\t\t\t\t\t\t\t\t// errors without a handler flow through\n\t\t\t\t\t\t\t\t\t\treject(errorResolution)\n\t\t\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t\t\t// resolve to the callback's result\n\t\t\t\t\t\t\t\t\t\tresolve(errorResolution ?\n\t\t\t\t\t\t\t\t\t\t\terrback(errorResolution) :\n\t\t\t\t\t\t\t\t\t\t\tcallback ?\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(resolution) : resolution)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}catch(newError) {\n\t\t\t\t\t\t\t\t\t// caught an error, reject the returned promise\n\t\t\t\t\t\t\t\t\treject(newError)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(isResolved) {\n\t\t\t\t\t\t\t\t// already resolved, immediately handle\n\t\t\t\t\t\t\t\thandle()\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\t(queue || (queue = [])).push(handle)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Promise\n\t\t}()),\n\t\tSet: typeof Set !== 'undefined' ?\n\t\t\tnew Set(['a']).length ? Set :\n\t\t\tfunction (elements) { // IE 11 doesn't support arguments to constructor\n\t\t\t\tvar set = new Set()\n\t\t\t\tif (elements) {\n\t\t\t\t\tfor (var i = 0; i < elements.length; i++) {\n\t\t\t\t\t\tset.add(elements[i])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn set\n\t\t\t} :\n\t\tfunction (elements) {\n\t\t\telements = elements || []\n\t\t\treturn {\n\t\t\t\tadd: function(element) {\n\t\t\t\t\tif (!this.has(element)) {\n\t\t\t\t\t\telements.push(element)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\thas: function(element) {\n\t\t\t\t\treturn elements.indexOf(element) > -1\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tMap: typeof Map !== 'undefined' ? Map : function () {\n\t\t\tvar map = Object.create(null)\n\t\t\treturn {\n\t\t\t\tset: function(key, value) {\n\t\t\t\t\tmap[key] = value\n\t\t\t\t},\n\t\t\t\thas: function(element) {\n\t\t\t\t\treturn Object.prototype.hasOwnProperty.call(map, key)\n\t\t\t\t},\n\t\t\t\tget: function(key) {\n\t\t\t\t\treturn map[key]\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tWeakMap: has('WeakMap') ? WeakMap :\n\t \tfunction (values, name) {\n\t \t\tvar mapProperty = '__' + (name || '') + id++\n\t \t\treturn has('defineProperty') ?\n\t \t\t{\n\t \t\t\tget: function (key) {\n\t \t\t\t\treturn key[mapProperty]\n\t \t\t\t},\n\t \t\t\tset: function (key, value) {\n\t \t\t\t\tObject.defineProperty(key, mapProperty, {\n\t \t\t\t\t\tvalue: value,\n\t \t\t\t\t\tenumerable: false\n\t \t\t\t\t})\n\t \t\t\t}\n\t \t\t} :\n\t \t\t{\n\t \t\t\tget: function (key) {\n\t \t\t\t\tvar intermediary = key[mapProperty]\n\t \t\t\t\treturn intermediary && intermediary.value\n\t \t\t\t},\n\t \t\t\tset: function (key, value) {\n\t \t\t\t\t// we use an intermediary that is hidden from JSON serialization, at least\n\t \t\t\t\tvar intermediary = key[mapProperty] || (key[mapProperty] = new Hidden())\n\t \t\t\t\tintermediary.value = value\n\t \t\t\t}\n\t \t\t}\n\t \t},\n\n\t\tobserve: observe,\n\t\tunobserve: unobserve,\n\t\textendClass: extendClass,\n\t\twhen: function(value, callback, errorHandler) {\n\t\t\treturn value && value.then ?\n\t\t\t\t(value.then(callback, errorHandler) || value) : callback(value)\n\t\t},\n\t\tcompose: function(Base, constructor, properties) {\n\t\t\tvar prototype = constructor.prototype = Object.create(Base.prototype)\n\t\t\tsetPrototypeOf(constructor, Base)\n\t\t\tfor(var i in properties) {\n\t\t\t\tprototype[i] = properties[i]\n\t\t\t}\n\t\t\tprototype.constructor = constructor\n\t\t\treturn constructor\n\t\t},\n\t\tsetPrototypeOf: setPrototypeOf,\n\t\tnextTurn: has('MutationObserver') ?\n\t\t\tfunction (callback) {\n\t\t\t\t// promises don't resolve consistently on the next micro turn (Edge doesn't do it right),\n\t\t\t\t// so use mutation observer\n\t\t\t\t// TODO: make a faster mode that doesn't recreate each time\n\t\t\t\tvar div = document.createElement('div')\n\t\t\t\tvar observer = new MutationObserver(callback)\n\t\t\t\tobserver.observe(div, {\n\t\t\t\t\tattributes: true\n\t\t\t\t})\n\t\t\t\tdiv.setAttribute('a', id++)\n\t\t\t} :\n\t\t\tfunction (callback) {\n\t\t\t\t// TODO: we can do better for other, older browsers\n\t\t\t\tsetTimeout(callback, 0)\n\t\t\t},\n\t\tcopy: Object.assign || function(target, source) {\n\t\t\tfor(var i in source) {\n\t\t\t\ttarget[i] = source[i]\n\t\t\t}\n\t\t\treturn target\n\t\t},\n\t\tdeepCopy: function(source) {\n\t\t\tif (source && typeof source == 'object') {\n\t\t\t\tif (source instanceof Array) {\n\t\t\t\t\tvar target = [] // always create a new array for array targets\n\t\t\t\t\tfor(var i = 0, l = source.length; i < l; i++) {\n\t\t\t\t\t\ttarget[i] = lang.deepCopy(source[i])\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar target = {}\n\t\t\t\t\tfor (var i in source) {\n\t\t\t\t\t\ttarget[i] = lang.deepCopy(source[i])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn target\n\t\t\t}\n\t\t\treturn source\n\t\t},\n\t\tconstructOrCall: constructOrCall || function(BaseClass, constructHandler, callHandler) {\n\t\t\treturn function Element() {\n\t\t\t\tif (this instanceof Element) {\n\t\t\t\t\tif (!this.hasOwnProperty('constructor') && Element.prototype === getPrototypeOf(this)) {\n\t\t\t\t\t\tif (constructHandler) {\n\t\t\t\t\t\t\treturn constructHandler.apply(Element, arguments)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lang.buggyConstructorSetter) {\n\t\t\t\t\t\t\t// in safari, directly setting the constructor messes up the native prototype\n\t\t\t\t\t\t\tObject.defineProperty(this, 'constructor', { value: Element })\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.constructor = Element\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (constructHandler) {\n\t\t\t\t\t\treturn constructHandler.apply(this.constructor, arguments)\n\t\t\t\t\t}\n\t\t\t\t\treturn BaseClass.apply(this, arguments)\n\t\t\t\t} else {\n\t\t\t\t\treturn callHandler.apply(Element, arguments)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfunctionConstruct: function(BaseClass, args, SubClass, instance) {\n\t\t\tif (!instance.hasOwnProperty('constructor') && SubClass.prototype === Object.getPrototypeOf(instance)) {\n\t\t\t\tinstance = Object.create(SubClass.prototype)\n\t\t\t\tif (lang.buggyConstructorSetter) {\n\t\t\t\t\t// in safari, directly setting the constructor messes up the native prototype\n\t\t\t\t\tObject.defineProperty(instance, 'constructor', { value: SubClass })\n\t\t\t\t} else {\n\t\t\t\t\tinstance.constructor = SubClass\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn BaseClass.apply(instance, args)\n\t\t}\n\t}\n\tfunction isGenerator(func) {\n\t\tif (typeof func === 'function') {\n\t\t\tvar constructor = func.constructor\n\t\t\t// this is used to handle both native generators and transpiled generators\n\t\t\treturn (constructor.displayName || constructor.name) === 'GeneratorFunction'\n\t\t}\n\t}\n\tfunction isGeneratorIterator(iterator) {\n\t\tif (iterator && iterator.next) {\n\t\t\tvar constructor = iterator.constructor.constructor\n\t\t\treturn (constructor.displayName || constructor.name) === 'GeneratorFunction'\n\t\t}\n\t}\n\tlang.isGenerator = isGenerator\n\n\tfunction spawn(generator) {\n\t\tvar generatorIterator = typeof generator === 'function' ? generator() : generator\n\t\tvar resuming\n\t\tvar nextValue\n\t\tvar isThrowing\n\t\treturn next()\n\t\tfunction next() {\n\t\t\tdo {\n\t\t\t\tvar stepReturn = generatorIterator[isThrowing ? 'throw' : 'next'](nextValue)\n\t\t\t\tif (stepReturn.done) {\n\t\t\t\t\treturn stepReturn.value\n\t\t\t\t}\n\t\t\t\tnextValue = stepReturn.value\n\t\t\t\ttry {\n\t\t\t\t\t// if the return value is a (generator) iterator, execute it\n\t\t\t\t\tif (nextValue && nextValue.next && isGeneratorIterator(nextValue)) {\n\t\t\t\t\t\tnextValue = spawn(nextValue)\n\t\t\t\t\t}\n\t\t\t\t\tif (nextValue && nextValue.then) {\n\t\t\t\t\t\t// if it is a promise, we will wait on it\n\t\t\t\t\t\t// and return the promise so that the next caller can wait on this\n\t\t\t\t\t\tvar resolved\n\t\t\t\t\t\tvar isSync = null\n\t\t\t\t\t\tvar result = nextValue.then(function(value) {\n\t\t\t\t\t\t\tnextValue = value\n\t\t\t\t\t\t\tisThrowing = false\n\t\t\t\t\t\t\tif (isSync === false) {\n\t\t\t\t\t\t\t\treturn next()\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tisSync = true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, function(error) {\n\t\t\t\t\t\t\tnextValue = error\n\t\t\t\t\t\t\tisThrowing = true\n\t\t\t\t\t\t\treturn next()\n\t\t\t\t\t\t})\n\t\t\t\t\t\tif (!isSync) {\n\t\t\t\t\t\t\tisSync = false\n\t\t\t\t\t\t\treturn result\n\t\t\t\t\t\t} // else keeping looping to avoid recursion\n\t\t\t\t\t}\n\t\t\t\t\tisThrowing = false\n\t\t\t\t} catch(error) {\n\t\t\t\t\tisThrowing = true\n\t\t\t\t\tnextValue = error\n\t\t\t\t}\n\t\t\t} while(true)\n\t\t}\n\t}\n\tlang.spawn = spawn\n\treturn lang\n}))\n","(function (root, factory) { if (typeof define === 'function' && define.amd) {\n\tdefine(['./util/lang'], factory) } else if (typeof module === 'object' && module.exports) {\n\tmodule.exports = factory(require('./util/lang')) // Node\n}}(this, function (lang) {\n\tvar deny = {}\n\tvar noChange = {}\n\tvar context\n\tvar WeakMap = lang.WeakMap\n\tvar Map = lang.Map\n\tvar Set = lang.Set\n\tvar setPrototypeOf = lang.setPrototypeOf\n\tvar getPrototypeOf = Object.getPrototypeOf || (function(base) { return base.__proto__ })\n\tvar isGenerator = lang.isGenerator\n\tvar undefined // makes it faster to be locally scoped\n\t// update types\n\tvar RequestChange = 3\n\tvar RequestSet = 4\n\tvar NOT_MODIFIED = {\n\t\tname: 'Not modified',\n\t\ttoString: function () {\n\t\t\treturn 'Marker for not-modified response'\n\t\t},\n\t}\n\tvar GET_TYPED_ARRAY = {\n\t\tgetTyped: true\n\t}\n\tvar GET_TYPED_OR_UNTYPED_ARRAY = {\n\t\tgetTyped: true,\n\t\tallowUntyped: true\n\t}\n\tvar GET_VALID_TYPE = {\n\t\tensureValidType: true\n\t}\n\n\tvar propertyListenersMap = new lang.WeakMap(null, 'propertyListenersMap')\n\tvar isStructureChecked = new lang.WeakMap()\n\tvar nextVersion = Date.now()\n\n\tvar CacheEntry = lang.compose(WeakMap, function() {\n\t},{\n\t\t_propertyChange: function(propertyName) {\n\t\t\tthis.variable._propertyChange(propertyName, contextFromCache(this))\n\t\t}\n\t})\n\tvar listenerId = 1\n\n\tfunction when(value, callback, errback) {\n\t\tif (value && value.then) {\n\t\t\treturn value.then(callback, errback)\n\t\t}\n\t\treturn callback(value)\n\t}\n\tfunction whenStrict(value, callback) {\n\t\tif (value && value.then && !value.notifies) {\n\t\t\treturn value.then(callback)\n\t\t}\n\t\treturn callback(value)\n\t}\n\n\tfunction Context(subject, notifies){\n\t\tthis.subject = subject\n\t\tif (notifies) {\n\t\t\tthis.notifies = notifies\n\t\t}\n\t}\n\tContext.prototype = {\n\t\tconstructor: Context,\n\t\tnewContext: function(variable) {\n\t\t\treturn new this.constructor(this.subject, this.notifies)\n\t\t},\n\t\texecuteWithin: function(executor) {\n\t\t\tvar previousContext = context\n\t\t\ttry {\n\t\t\t\tcontext = this\n\t\t\t\treturn executor()\n\t\t\t} finally {\n\t\t\t\tcontext = previousContext\n\t\t\t}\n\t\t},\n\t\t//version: 2166136261, // FNV-1a prime seed\n\t\tversion: 1,\n\t\trestart: function() {\n\t\t\t//this.version = 2166136261\n\t\t},\n\t\tcontextualize: function(variable, parentContext) {\n\t\t\t// resolve the contextualization of a variable, and updates this context to be aware of what distinctive aspect of the context has\n\t\t\t// been used for resolution\n\t\t\tvar contextualized\n\t\t\tif (this.distinctSubject) {\n\t\t\t\tvar contextMap = variable._contextMap || (variable._contextMap = new lang.WeakMap())\n\t\t\t\tcontextualized = contextMap.get(this.distinctSubject)\n\t\t\t\tif (!contextualized) {\n\t\t\t\t\tcontextMap.set(this.distinctSubject, contextualized = Object.create(variable))\n\t\t\t\t\tcontextualized.listeners = false\n\t\t\t\t\tcontextualized.context = this\n\t\t\t\t\tvar sources = this.sources\n\t\t\t\t\tfor (var i = 0, l = sources.length; i < l; i++) {\n\t\t\t\t\t\tcontextualized[sources[i]] = sources[++i]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.contextualized = contextualized\n\t\t\t\t// do the merge\n\t\t\t\tif (parentContext) {\n\t\t\t\t\tparentContext.merge(this)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcontextualized = variable\n\t\t\t}\n\t\t\t//if (this.contextualized && this.contextualized !== contextualized) {\n\t\t\t\t// TOOD: if it has previously been contextualized to a different context (can happen in a promise/async situation), stop previous notifiers and start new ones\n\t\t\t//}\n\t\t\treturn contextualized\n\t\t},\n\t\tsetVersion: function(version) {\n/*\t\t\t// FNV1a hash algorithm 32-bit\n\t\t\treturn this.version = (this.version ^ (version || 0)) * 16777619 >>> 0*/\n\n/*\t\t\t// 54 bit FNV1a hash algorithm\n\t\t\tvar xored = this.version ^ (version || 0)\n\t\t\t// 435 + 1099511627776 = 1099511628211 is 64 bit FNV prime\n\t\t\treturn this.version =\n\t\t\t\txored * 435 + // compute hash on lower 32 bits\n\t\t\t\t(xor & 16777215) * 1099511627776 + // compute hash on lower 24 bits that overflow into upper 32 bits\n\t\t\t\t((this.version / 4294967296 >>> 0) * 435 & 2097151) * 4294967296 // hash on upper 32 bits*/\n\t\t\t// 54 bit derivative of FNV1a that better uses JS numbers/operators\n\n\t\t\t// a fast, efficient hash\n\t\t\t//return this.version = (this.version ^ (version || 0)) * 1049011 + (this.version / 5555555 >>> 0)\n\t\t\t// if we are using globally monotonically increasing version, we can just use max\n\t\t\tif (isNaN(version)) {\n\t\t\t\tthrow new Error('Bad version')\n\t\t\t}\n\t\t\treturn this.version = Math.max(this.version, version)\n\t\t},\n\t\tmerge: function(childContext) {\n\t\t\tif (!this.distinctSubject) {\n\t\t\t\tthis.distinctSubject = childContext.distinctSubject\n\t\t\t}\n\t\t},\n\t\tspecify: function(Variable) {\n\t\t\t// specify a particular instance of a generic variable\n\t\t\tvar subject = this.subject\n\t\t\tvar subjectMap = subject.constructor.ownedClasses\n\t\t\tvar specifiedInstance\n\t\t\tif (subjectMap) {\n\t\t\t\tif (!this.distinctSubject) {\n\t\t\t\t\tthis.distinctSubject = subject\n\t\t\t\t}\n\t\t\t\tvar instanceMap = subjectMap.get(Variable)\n\t\t\t\tif (instanceMap) {\n\t\t\t\t\tspecifiedInstance = instanceMap.get(subject)\n\t\t\t\t\tif (!specifiedInstance) {\n\t\t\t\t\t\tinstanceMap.set(subject, specifiedInstance = instanceMap.createInstance ? instanceMap.createInstance(subject) : new Variable())\n\t\t\t\t\t}\n\t\t\t\t\treturn specifiedInstance\n\t\t\t\t}\n\t\t\t}\n\t\t\t// else if no specific context is found, return default instance\n\t\t\treturn Variable.defaultInstance\n\t\t},\n\t\tgetContextualized: function(variable) {\n\t\t\tif (!this.subject) {\n\t\t\t\t// no subject, just use the default variable\n\t\t\t\treturn variable\n\t\t\t}\n\t\t\t// returns a variable that has already been contextualized\n\t\t\tvar instance = variable._contextMap && this.subject && variable._contextMap.get(this.subject)\n\t\t\tif (instance && instance.context && instance.context.matches(this)) {\n\t\t\t\treturn instance\n\t\t\t}\n\t\t},\n\t\tmatches: function(context) {\n\t\t\t// does another context match the resolution of this one?\n\t\t\treturn context.subject === this.subject\n\t\t}\n\t}\n\n\tfunction NotifyingContext(listener, subject){\n\t\tthis.subject = subject\n\t\tthis.listener = listener\n\t}\n\tNotifyingContext.prototype = Object.create(Context.prototype)\n\tNotifyingContext.prototype.constructor = NotifyingContext\n\n\tfunction registerListener(value, listener) {\n\t\tvar listeners = propertyListenersMap.get(value)\n\t\tvar id = listener.listenerId || (listener.listenerId = ('-' + listenerId++))\n\t\tif (listeners) {\n\t\t\tif (listeners[id] === undefined) {\n\t\t\t\tlisteners[id] = listeners.push(listener) - 1\n\t\t\t}\n\t\t}else{\n\t\t\tpropertyListenersMap.set(value, listeners = [listener])\n\t\t\tlisteners[id] = 0\n\t\t\tif (Variable.autoObserveObjects) {\n\t\t\t\tobserve(value)\n\t\t\t}\n\t\t}\n\t\tlistener.listeningToObject = value\n\t}\n\tfunction deregisterListener(listener) {\n\t\tif (listener.listeningToObject) {\n\t\t\tvar value = listener.listeningToObject\n\t\t\tlistener.listeningToObject = null\n\t\t\tvar listeners = propertyListenersMap.get(value)\n\t\t\tif (listeners) {\n\t\t\t\tvar index = listeners[listener.listenerId]\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tlisteners.splice(index, 1)\n\t\t\t\t\tdelete listeners[listener.listenerId]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction UpdateEvent() {\n\t\tthis.visited = new Set()\n\t}\n\tUpdateEvent.prototype.type = 'replaced'\n\n\tfunction ReplacedEvent(triggerEvent) {\n\t\tthis.visited = triggerEvent ? triggerEvent.visited : new Set()\n\t}\n\tReplacedEvent.prototype.type = 'replaced'\n\n\tfunction PropertyChangeEvent(key, propertyEvent, parent) {\n\t\tthis.key = key\n\t\tthis.propertyEvent = propertyEvent\n\t\tthis.parent = parent\n\t\tthis.visited = propertyEvent.visited\n\t}\n\tPropertyChangeEvent.prototype.type = 'property'\n\n\tfunction SplicedEvent(modifier, items, removed, start, deleteCount) {\n\t\tthis.visited = new Set()\n\t\tthis.modifier = modifier\n\t\tthis.items = items\n\t\tthis.removed = removed\n\t\tthis.start = start\n\t\tthis.deleteCount = deleteCount\n\t}\n\tSplicedEvent.prototype.type = 'spliced'\n\tfunction EntryEvent(key, value, entryEvent) {\n\t\tthis.entryEvent = entryEvent\n\t\tthis.visited = entryEvent.visited\n\t\tthis.key = key\n\t\tthis.value = value\n\t}\n\tEntryEvent.prototype.type = 'entry'\n\tEntryEvent.prototype.doesAffect = function(subject) {\n\t\treturn this.value.constructor.for(subject).id.valueOf() == this.value.id.valueOf()\n\t}\n\n\tfunction DeletedEvent(key, value) {\n\t\tthis.key = key\n\t\tthis.value = value\n\t\tthis.visited = new Set()\n\t}\n\tDeletedEvent.prototype.type = 'deleted'\n\n\tfunction AddedEvent(key, value) {\n\t\tthis.key = key\n\t\tthis.value = value\n\t\tthis.visited = new Set()\n\t}\n\tAddedEvent.prototype.type = 'added'\n\tAddedEvent.prototype.doesAffect = function() {\n\t\treturn false\n\t}\n\n\tfunction forPropertyNotifyingValues(variable, properties, callback) {\n\t\tif (variable === properties) {\n\t\t\tforPropertyNotifyingValues(variable, variable._properties, callback)\n\t\t}\n\t\tfor (var key in properties) {\n\t\t\tvar property = properties[key]\n\t\t\tif (property && property.parent == variable) {\n\t\t\t\tif (property.returnedVariable) {\n\t\t\t\t\tcallback(property.returnedVariable)\n\t\t\t\t}\n\t\t\t\tif (property.hasChildNotifiers) {\n\t\t\t\t\tvar subProperties = property._properties\n\t\t\t\t\tif (subProperties) {\n\t\t\t\t\t\tforPropertyNotifyingValues(property, property, callback)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction assignPromise(variable, promise, callback) {\n\t\tvar isSync\n\t\tpromise.then(function(value) {\n\t\t\tif (isSync !== false) {\n\t\t\t\t// synchronous resolution\n\t\t\t\tisSync = true\n\t\t\t} else if (variable.promise === promise) {\n\t\t\t\t// async resolution make sure we are the still the most recent promise\n\t\t\t\tvariable.promise = null\n\t\t\t} else {\n\t\t\t\t// if async and we are not the most recent, just return\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (callback) { // custom handler\n\t\t\t\tcallback(value)\n\t\t\t} else {\n\t\t\t\tvariable.value = value\n\t\t\t}\n\t\t}, function(error) {\n\t\t\tif (isSync !== false) {\n\t\t\t\t// synchronous resolution\n\t\t\t\tisSync = true\n\t\t\t} else if (variable.promise === promise) {\n\t\t\t\t// async resolution make sure we are the still the most recent promise\n\t\t\t\tvariable.promise = null\n\t\t\t} else {\n\t\t\t\t// if async and we are not the most recent, just return\n\t\t\t\treturn\n\t\t\t}\n\t\t\tvariable.error = error\n\t\t})\n\t\tif (!isSync) {\n\t\t\tisSync = false\n\t\t\tvariable.promise = promise\n\t\t}\n\t\treturn promise\n\t}\n\n\tfunction Variable(value) {\n\t\tif (this instanceof Variable) {\n\t\t\t// new call, may eventually use new.target\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (value && value.then && !value.notifies) {\n\t\t\t\t\tassignPromise(this, value)\n\t\t\t\t} else {\n\t\t\t\t\tthis.value = value\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn Variable.with(value)\n\t\t}\n\t}\n\n\tVariable._logStackTrace = function(v) {\n\t\tvar stack = (new Error().stack || '').split(/[\\r\\n]+/)\n\t\tif (stack[0] && /^Error\\s*/.test(stack[0])) stack.shift()\n\t\tif (stack[0] && /_logStackTrace/.test(stack[0])) stack.shift()\n\t\tvar coalesce = (this._debugOpts && this._debugOpts.coalesce) || []\n\t\tif (this._debugOpts && this._debugOpts.shortStackTrace) {\n\t\t\t// find the first non-coalesced line\n\t\t\tvar line\n\t\t\tstack.some(function(line) {\n\t\t\t\tif (!coalesce.some(function(re) {\n\t\t\t\t\treturn re.re.test(line)\n\t\t\t\t})) {\n\t\t\t\t\tline = stack[0]\n\t\t\t\t}\n\t\t\t})\n\t\t\tconsole.log('Variable ' + v.__debug + ' changed', line && line.replace(/^\\s+/, ''))\n\t\t} else {\n\t\t\tif (coalesce.length) {\n\t\t\t\tvar s = []\n\t\t\t\tvar re\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\n\t\t\t\t\tvar line = stack[i]\n\t\t\t\t\tif (re) {\n\t\t\t\t\t\tif (re.test(line)) continue\n\t\t\t\t\t\tre = null\n\t\t\t\t\t}\n\t\t\t\t\tre\n\t\t\t\t\tcoalesce.some(function(re) {\n\t\t\t\t\t\treturn re = re.re.test(line)\n\t\t\t\t\t})\n\t\t\t\t\tline = line.replace(/^\\s+/,'')\n\t\t\t\t\tif (re) {\n\t\t\t\t\t\ts.push('(' + re.name + ') ' + line)\n\t\t\t\t\t\tre = re.re\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts.push(line)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstack = s\n\t\t\t}\n\t\t\tvar stackObject = this._debugOpts && this._debugOpts.stackObject\n\t\t\tif (stackObject) {\n\t\t\t\tconsole.log('Variable ' + v.__debug + ' changed', stack)\n\t\t\t} else {\n\t\t\t\tconsole.log('Variable ' + v.__debug + ' changed\\r\\n' + stack.join('\\r\\n'))\n\t\t\t}\n\t\t}\n\t}\n\n\tVariable._debugOpts = {\n\t\tcoalesce: [{ name: 'alkali', re: /\\/alkali\\// }, { name: 'Promise', re: /(Promise\\.)|(PromiseArray\\.)|(\\/bluebird\\/)/ }],\n\t\tstackObject: false\n\t}\n\n\tvar VariablePrototype = Variable.prototype = {\n\t\t// for debugging use\n\t\tconstructor: Variable,\n\t\tvalueOf: function(allowPromise) {\n\t\t\tvar result = this.gotValue(this.getValue())\n\t\t\treturn (allowPromise || !(result && result.then)) ? result : undefined\n\t\t},\n\t\tthen: function(onFulfilled, onRejected) {\n\t\t\tvar result, isAsyncPromise\n\t\t\ttry {\n\t\t\t\tresult = this.valueOf(true)\n\t\t\t\tisAsyncPromise = result && result.then\n\t\t\t\tif (!isAsyncPromise) {\n\t\t\t\t\tresult = new lang.SyncPromise(result) // ensure it is promise-like\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tresult = new lang.SyncErrorPromise(error)\n\t\t\t}\n\t\t\tif (onFulfilled || onRejected) { // call then if we have any callbacks\n\t\t\t\tif (isAsyncPromise && context) {\n\t\t\t\t\t// if it is async and we have a context, we will restore it for the callback\n\t\t\t\t\tvar currentContext = context\n\t\t\t\t\treturn result.then(onFulfilled && function(result) {\n\t\t\t\t\t\treturn currentContext.executeWithin(function() {\n\t\t\t\t\t\t\treturn onFulfilled(result)\n\t\t\t\t\t\t})\n\t\t\t\t\t}, onRejected && function(error) {\n\t\t\t\t\t\treturn currentContext.executeWithin(function() {\n\t\t\t\t\t\t\treturn onRejected(error)\n\t\t\t\t\t\t})\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn result.then(onFulfilled, onRejected)\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\t\tgetValue: function(forChild) {\n\t\t\tif (context) {\n\t\t\t\tcontext.setVersion(forChild ? this.version : Math.max(this.version || 0, this.versionWithChildren || 0))\n\t\t\t}\n\t\t\tvar key = this.key\n\t\t\tvar parent\n\t\t\tif (key != null && (parent = this.parent) != null) {\n\t\t\t\tif (context) {\n\t\t\t\t\tif (context.ifModifiedSince != null) {\n\t\t\t\t\t\t// just too complicated to handle NOT_MODIFED objects for now\n\t\t\t\t\t\t// TODO: Maybe handle this and delegate NOT_MODIFIED through this\n\t\t\t\t\t\t// chain and through gotValue\n\t\t\t\t\t\tcontext.ifModifiedSince = undefined\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar property = this\n\t\t\t\tvar object\n\t\t\t\tif (parent.getValue) {\n\t\t\t\t\t// parent needs value context, might want to do separate context,\n\t\t\t\t\t// but would need to treat special so it retrieves the version\n\t\t\t\t\t// only and not the versionWithChildren\n\t\t\t\t\tobject = parent.getValue(true)\n\t\t\t\t} else {\n\t\t\t\t\tobject = parent.value\n\t\t\t\t}\n\t\t\t\tif (object && object.then && !object.notifies) {\n\t\t\t\t\treturn when(object, function(object) {\n\t\t\t\t\t\tvar value = object == null ? undefined :\n\t\t\t\t\t\t\ttypeof object.property === 'function' ? object.property(key) :\n\t\t\t\t\t\t\ttypeof object.get === 'function' ? object.get(key) : object[key]\n\t\t\t\t\t\t//if (property.listeners) {\n\t\t\t\t\t\t\tvar listeners = propertyListenersMap.get(object)\n\t\t\t\t\t\t\tif (listeners && listeners.observer && listeners.observer.addKey) {\n\t\t\t\t\t\t\t\tlisteners.observer.addKey(key)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t//}\n\t\t\t\t\t\treturn value\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tvar value = object == null ? undefined :\n\t\t\t\t\ttypeof object.property === 'function' ? object.property(key) :\n\t\t\t\t\ttypeof object.get === 'function' ? object.get(key) : object[key]\n\t\t\t\t//if (property.listeners) {\n\t\t\t\t\tvar listeners = propertyListenersMap.get(object)\n\t\t\t\t\tif (listeners && listeners.observer && listeners.observer.addKey) {\n\t\t\t\t\t\tlisteners.observer.addKey(key)\n\t\t\t\t\t}\n\t\t\t\t//}\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (this.promise) {\n\t\t\t\treturn this.promise\n\t\t\t}\n\t\t\tvar value = this.value\n\t\t\treturn value !== undefined ?\n\t\t\t\tthis.value : this.default\n\t\t},\n\t\tgotValue: function(value) {\n\t\t\tvar previousNotifyingValue = this.returnedVariable\n\t\t\tvar variable = this\n\t\t\tif (previousNotifyingValue) {\n\t\t\t\tif (value === previousNotifyingValue) {\n\t\t\t\t\t// nothing changed, immediately return valueOf\n\t\t\t\t\tif (context && context.ifModifiedSince > 0) // we don't want the nested value to return a NOT_MODIFIED\n\t\t\t\t\t\tcontext.ifModifiedSince = undefined\n\t\t\t\t\treturn value.valueOf(true)\n\t\t\t\t}\n\t\t\t\t// if there was a another value that we were dependent on before, stop listening to it\n\t\t\t\t// TODO: we may want to consider doing cleanup after the next rendering turn\n\t\t\t\tif (variable.listeners) {\n\t\t\t\t\tpreviousNotifyingValue.stopNotifies(variable)\n\t\t\t\t}\n\t\t\t\tvariable.returnedVariable = null\n\t\t\t}\n\t\t\tif (value && value.notifies) {\n\t\t\t\tvariable.returnedVariable = value\n\t\t\t\tif (variable.listeners) {\n\t\t\t\t\tvalue.notifies(variable)\n\t\t\t\t}\n\t\t\t\tif (context && context.ifModifiedSince > 0) // we don't want the nested value to return a NOT_MODIFIED\n\t\t\t\t\tcontext.ifModifiedSince = undefined\n\t\t\t\tvalue = value.valueOf(true)\n\t\t\t}\n\t\t\tif (value && value.then) {\n\t\t\t\tvar deferredContext = context\n\t\t\t\treturn value.then(function(value) {\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tif (value.__variable) {\n\t\t\t\t\t\t\tvalue = value.__variable\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value.subscribe) {\n\t\t\t\t\t\t\tif (deferredContext) {\n\t\t\t\t\t\t\t\treturn deferredContext.executeWithin(function() {\n\t\t\t\t\t\t\t\t\treturn Variable.prototype.gotValue.call(variable, value)\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn Variable.prototype.gotValue.call(variable, value)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn value\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn value\n\t\t},\n\t\tPropertyClass: Variable,\n\t\tproperty: function(key, PropertyClass) {\n\t\t\tvar propertyVariable = this[key]\n\t\t\tif (!propertyVariable || !propertyVariable.notifies) {\n\t\t\t\tpropertyVariable = this._properties && this._properties[key]\n\t\t\t}\n\t\t\tif (!propertyVariable) {\n\t\t\t\t// create the property variable\n\t\t\t\tvar Class = PropertyClass\n\t\t\t\tif (!Class) {\n\t\t\t\t\tClass = this.constructor[key]\n\t\t\t\t\tif (typeof Class !== 'function' || !Class.isPropertyClass) {\n\t\t\t\t\t\tClass = this.PropertyClass\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpropertyVariable = new Class()\n\t\t\t\tpropertyVariable.key = key\n\t\t\t\tpropertyVariable.parent = this\n\t\t\t\tif (this[key] === undefined) {\n\t\t\t\t\tthis[key] = propertyVariable\n\t\t\t\t} else {\n\t\t\t\t\t(this._properties || (this._properties = {}))[key] = propertyVariable\n\t\t\t\t}\n\t\t\t} else if (PropertyClass) {\n\t\t\t\tif (!(propertyVariable instanceof PropertyClass)) {\n\t\t\t\t\tthrow new TypeError('Existing property variable does not match requested variable type')\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn propertyVariable\n\t\t},\n\t\tfor: function(subject) {\n\t\t\tif (subject && subject.target && !subject.constructor.getForClass) {\n\t\t\t\t// makes HTML events work\n\t\t\t\tsubject = subject.target\n\t\t\t}\n\t\t\tif (this.parent) {\n\t\t\t\treturn this.parent.for(subject).property(this.key)\n\t\t\t}\n\t\t\treturn new ContextualizedVariable(this, subject || defaultContext)\n\t\t},\n\t\tget isWritable() {\n\t\t\treturn this.fixed ? !this.value || this.value.isWritable : this._isWritable\n\t\t},\n\t\tset isWritable(isWritable) {\n\t\t\tthis._isWritable = isWritable\n\t\t},\n\t\t_isWritable: true,\n\t\t_propertyChange: function(propertyName, object, type) {\n\t\t\tif (this.onPropertyChange) {\n\t\t\t\tthis.onPropertyChange(propertyName, object)\n\t\t\t}\n\t\t\tthis.updated(new PropertyChangeEvent(propertyName, new ReplacedEvent(), this))\n\t\t},\n\t\teachKey: function(callback) {\n\t\t\tfor (var i in this._properties) {\n\t\t\t\tcallback(i)\n\t\t\t}\n\t\t\tfor (var i in this) {\n\t\t\t\tif (this.hasOwnProperty[i]) {\n\t\t\t\t\tvar value = this[i]\n\t\t\t\t\tif (value && value.parent == this && value.listeners) {\n\t\t\t\t\t\tcallback(i)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tapply: function(instance, args) {\n\t\t\treturn new Transform(args[0], this, args)\n\t\t},\n\t\tcall: function(instance) {\n\t\t\treturn this.apply(instance, Array.prototype.slice.call(arguments, 1))\n\t\t},\n\t\tforDependencies: function(callback) {\n\t\t\tif (this.returnedVariable) {\n\t\t\t\tcallback(this.returnedVariable)\n\t\t\t}\n\t\t\tif (this.hasNotifyingChild) {\n\t\t\t\tforPropertyNotifyingValues(this, this, callback)\n\t\t\t}\n\t\t\tif (this.parent) {\n\t\t\t\tcallback(this.parent)\n\t\t\t}\n\t\t},\n\t\tinit: function() {\n\t\t\tvar variable = this\n\t\t\tvar contextualizes, sources = [] // TODO: optimize this\n\t\t\tthis.forDependencies(function(dependency) {\n\t\t\t\tvar contextualized = dependency.notifies(variable)\n\t\t\t\tif (contextualized !== dependency) {\n\t\t\t\t\tcontextualizes = true\n\t\t\t\t}\n\t\t\t\tsources.push(contextualized)\n\t\t\t})\n/*\t\t\tif (contextualizes) {\n\t\t\t\tvar contextualized = new ContextualizedVariable()\n\t\t\t\t//context.instanceMap.set(this, contextualized)\n\t\t\t\tcontextualized.sources = sources\n\t\t\t\tcontextualized.init()\n\t\t\t\treturn contextualized\n\t\t\t}\n*/\n\t\t\tif (this.listeningToObject === null) {\n\t\t\t\t// we were previously listening to an object, but it needs to be restored\n\t\t\t\t// calling valueOf will cause the listening object to be restored\n\t\t\t\tthis.valueOf()\n\t\t\t}\n\t\t\treturn this\n\t\t},\n\t\tcleanup: function() {\n\t\t\tthis.listeners = false\n\t\t\tvar handles = this.handles\n\t\t\tif (handles) {\n\t\t\t\tfor (var i = 0; i < handles.length; i++) {\n\t\t\t\t\thandles[i].remove()\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.handles = null\n\t\t\tvar returnedVariable = this.returnedVariable\n\t\t\tvar variable = this\n\t\t\tthis.forDependencies(function(dependency) {\n\t\t\t\tdependency.stopNotifies(variable)\n\t\t\t})\n\t\t},\n\n\t\tversion: 0,\n\t\tversionWithChildren: 0,\n\n\t\tupdateVersion: function(version) {\n\t\t\tvar dateBasedVersion = (Date.now() - 1500000000000) * 256\n\t\t\tif (dateBasedVersion > nextVersion) {\n\t\t\t\tnextVersion = dateBasedVersion\n\t\t\t}\n\t\t\tthis.version = nextVersion++\n\t\t},\n\n\t\tgetVersion: function() {\n\t\t\treturn Math.max(this.version,\n\t\t\t\tthis.returnedVariable && this.returnedVariable.getVersion ? this.returnedVariable.getFullVersion(context) : 0,\n\t\t\t\tthis.parent ? this.parent.getVersion(context) : 0)\n\t\t},\n\t\tgetFullVersion: function() {\n\t\t\treturn Math.max(this.versionWithChildren, this.getVersion())\n\t\t},\n\n\t\tgetSubject: function(selectVariable) {\n\t\t\treturn this.subject\n\t\t},\n\n\t\tgetUpdates: function(since) {\n\t\t\tvar updates = []\n\t\t\tvar nextUpdateMap = this.nextUpdateMap\n\t\t\tif (nextUpdateMap && since) {\n\t\t\t\twhile ((since = nextUpdateMap.get(since))) {\n\t\t\t\t\tif (since.type === 'replaced') {\n\t\t\t\t\t\t// if it was refresh, we can clear any prior entries\n\t\t\t\t\t\tupdates = []\n\t\t\t\t\t}\n\t\t\t\t\tupdates.push(since)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn updates\n\t\t},\n\n\t\t_initUpdate: function(updateEvent, isDownstream) {\n\t\t\tif (!updateEvent.version) {\n\t\t\t\tvar dateBasedVersion = (Date.now() - 1500000000000) * 256\n\t\t\t\tif (dateBasedVersion > nextVersion) {\n\t\t\t\t\tnextVersion = dateBasedVersion\n\t\t\t\t}\n\t\t\t\tupdateEvent.version = nextVersion++\n\t\t\t}\n\t\t\tif (updateEvent instanceof PropertyChangeEvent) {\n\t\t\t\tthis.versionWithChildren = updateEvent.version\n\t\t\t} else if (!isDownstream) {\n\t\t\t\tthis.version = updateEvent.version\n\t\t\t}\n\t\t\treturn updateEvent\n\t\t},\n\n\t\tupdated: function(updateEvent, by, isDownstream) {\n\t\t\tif (!updateEvent) {\n\t\t\t\tupdateEvent = new ReplacedEvent()\n\t\t\t\tupdateEvent.source = this\n\t\t\t}\n\t\t\tif (updateEvent.visited.has(this)){\n\t\t\t\t// if this event has already visited this variable, skip it\n\t\t\t\treturn updateEvent\n\t\t\t}\n\t\t\tupdateEvent.visited.add(this)\n\t\t\tif (this.__debug) {\n\t\t\t\t// debug is on\n\t\t\t\tVariable._logStackTrace(this)\n\t\t\t}\n\n\t\t\t/*var contextualInstance = context && context.getContextualized(this)\n\t\t\tif (contextualInstance) {\n\t\t\t\tcontextualInstance.updated(updateEvent, this)\n\t\t\t}\n\n\t\t\t// at some point we could do an update list so that we could incrementally update\n\t\t\t// lists in non-live situations\n\t\t\tif (this.lastUpdate) {\n\t\t\t\tvar nextUpdateMap = this.nextUpdateMap\n\t\t\t\tif (!nextUpdateMap) {\n\t\t\t\t\tnextUpdateMap = this.nextUpdateMap = new lang.WeakMap()\n\t\t\t\t}\n\t\t\t\tnextUpdateMap.set(this.lastUpdate, updateEvent)\n\t\t\t}\n\n\t\t\tthis.lastUpdate = updateEvent */\n\t\t\tthis._initUpdate(updateEvent, isDownstream)\n\t\t\tvar listeners = this.listeners\n\t\t\tif (listeners) {\n\t\t\t\tvar variable = this\n\t\t\t\t// make a copy, in case they change\n\t\t\t\tlisteners = listeners.slice()\n\t\t\t\tfor (var i = 0, l = listeners.length; i < l; i++) {\n\t\t\t\t\tvar dependent = listeners[i]\n\t\t\t\t\tif (dependent.parent && !(updateEvent instanceof ReplacedEvent)) {\n\t\t\t\t\t\tif (updateEvent instanceof PropertyChangeEvent) {\n\t\t\t\t\t\t\tif (dependent.key === updateEvent.key) {\n\t\t\t\t\t\t\t\tdependent.updated(updateEvent.propertyEvent, variable)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar childEvent = new ReplacedEvent(updateEvent)\n\t\t\t\t\t\t\tdependent.updated(childEvent, variable, true)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdependent.updated(updateEvent, variable, true)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updateEvent instanceof PropertyChangeEvent || updateEvent instanceof ReplacedEvent) {\n\t\t\t\tif (this.returnedVariable && this.fixed) {\n\t\t\t\t\tthis.returnedVariable.updated(updateEvent, this)\n\t\t\t\t}\n\t\t\t\tvar Class = this.constructor\n\t\t\t\tvar variable = this\n\t\t\t\tif (Class.collection) {\n\t\t\t\t\tClass.collection.updated(new EntryEvent(this.id, this, updateEvent))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.parent) {\n\t\t\t\tthis.parent.updated(new PropertyChangeEvent(this.key, updateEvent, this.parent), this)\n\t\t\t}\n\t\t\tif (this.collection) {\n\t\t\t\tthis.collection.updated(updateEvent, this)\n\t\t\t}\n\t\t\treturn updateEvent\n\t\t},\n\n\t\tinvalidate: function() {\n\t\t\t// for back-compatibility for now\n\t\t\tthis.updated()\n\t\t},\n\n\t\tnotifies: function(target) {\n\t\t\t// TODO: Eventually we want this to be trigerred from context, but context gets shared with returned variables, so will need to handle that\n\t\t\tif (!target) {\n\t\t\t\tthrow new Error('No listener provided for notification')\n\t\t\t}\n\t\t\tvar listeners = this.listeners\n\t\t\tif (!listeners || !this.hasOwnProperty('listeners')) {\n\t\t\t\tvar variable = this.init()\n\t\t\t\tvariable.listeners = listeners = [target]\n\t\t\t\treturn variable\n\t\t\t} else if (listeners.indexOf(target) === -1) {\n\t\t\t\tlisteners.push(target)\n\t\t\t}\n\t\t\treturn this\n\t\t},\n\t\tsubscribe: function(listener) {\n\t\t\t// ES7 Observable (and baconjs) compatible API\n\t\t\tvar updated\n\t\t\tvar updateQueued\n\t\t\tvar variable = this\n\t\t\t// it is important to make sure you register for notifications before getting the value\n\t\t\tif (typeof listener === 'function') {\n\t\t\t\t// BaconJS compatible API\n\t\t\t\tvar variable = this\n\t\t\t\tvar event = {\n\t\t\t\t\tvalue: function() {\n\t\t\t\t\t\treturn new Context(null, true).executeWithin(function() {\n\t\t\t\t\t\t\treturn variable.valueOf(true)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tupdated = function() {\n\t\t\t\t\tupdateQueued = false\n\t\t\t\t\tlistener(event)\n\t\t\t\t}\n\t\t\t}\telse if (listener.next) {\n\t\t\t\t// Assuming ES7 Observable API. It is actually a streaming API, this pretty much violates all principles of reactivity, but we will support it\n\t\t\t\tupdated = function() {\n\t\t\t\t\tupdateQueued = false\n\t\t\t\t\tvariable.then(function(value) {\n\t\t\t\t\t\tlistener.next(value)\n\t\t\t\t\t}, function(error) {\n\t\t\t\t\t\tlistener.error(value)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow new Error('Subscribing to an invalid listener, the listener must be a function, or have an update or next method')\n\t\t\t}\n\t\t\tvar updateReceiver = {\n\t\t\t\tupdated: function() {\n\t\t\t\t\tif (updateQueued) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tupdateQueued = true\n\t\t\t\t\tlang.nextTurn(updated)\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdated()\n\t\t\tthis.notifies(updateReceiver)\n\t\t\treturn {\n\t\t\t\tunsubscribe: function() {\n\t\t\t\t\tvariable.stopNotifies(updateReceiver)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tstopNotifies: function(dependent) {\n\t\t\tvar listeners = this.listeners\n\t\t\tif (listeners) {\n\t\t\t\tvar index = listeners.indexOf(dependent)\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tlisteners.splice(index, 1)\n\t\t\t\t\tif (listeners.length === 0) {\n\t\t\t\t\t\t// clear the listeners so it will be reinitialized if it has\n\t\t\t\t\t\t// listeners again\n\t\t\t\t\t\tthis.cleanup()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tput: function(value, event) {\n\t\t\tif (this.parent && this.key !== undefined) {\n\t\t\t\treturn changeValue(this, RequestChange, value, event)\n\t\t\t}\n\t\t\tvar oldValue = this.getValue ? this.getValue() : this.value\n\t\t\tif (oldValue === value && typeof value != 'object') {\n\t\t\t\treturn noChange\n\t\t\t}\n\t\t\tif (oldValue && oldValue.put && oldValue.notifies) {\n\t\t\t\t// if it is set to fixed, we see we can put in the current variable\n\t\t\t\tif (this.fixed || !(value && value.put && value.notifies)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn oldValue.put(value)\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tif (!error.deniedPut) {\n\t\t\t\t\t\t\tthrow error\n\t\t\t\t\t\t}// else if the put was denied, continue on and set the value on this variable\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (value && value.then && !value.notifies) {\n\t\t\t\tvalue = assignPromise(this, value)\n\t\t\t} else {\n\t\t\t\tthis.value = value\n\t\t\t\tif (value && value.put) {\n\t\t\t\t\t// preserve a reference to the original variable so we can `save()` back into it\n\t\t\t\t\tthis.copiedFrom = value\n\t\t\t\t}\n\t\t\t}\n\t\t\tevent = event || new ReplacedEvent()\n\t\t\tevent.oldValue = oldValue\n\t\t\tevent.target = this\n\t\t\tthis.updated(event, this)\n\t\t\treturn value\n\t\t},\n\t\tget: function(key) {\n\t\t\tif (this[key] || (this._properties && this._properties[key])) {\n\t\t\t\treturn this.property(key).valueOf(true)\n\t\t\t}\n\t\t\tvar object = this.getValue()\n\t\t\tif (!object) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (typeof object.get === 'function') {\n\t\t\t\treturn object.get(key)\n\t\t\t}\n\t\t\tvar value = object[key]\n\t\t\tif (value && value.notifies) {\n\t\t\t\t// nested variable situation, get underlying value\n\t\t\t\treturn value.valueOf(true)\n\t\t\t}\n\t\t\treturn value\n\t\t},\n\t\tset: function(key, value, event) {\n\t\t\t// TODO: create an optimized route when the property doesn't exist yet\n\t\t\tchangeValue(this.property(key), RequestSet, value, event)\n\t\t},\n\t\tundefine: function(key) {\n\t\t\tthis.set(key, undefined)\n\t\t},\n\t\tis: function(newValue, event) {\n\t\t\tif (this.parent) {\n\t\t\t\tvar parent = this.parent\n\t\t\t\tvar key = this.key\n\t\t\t\tvar object = (parent.getValue ? parent.getValue(true) : parent.value)\n\t\t\t\tvar parentEvent = new PropertyChangeEvent(key, event || new ReplacedEvent(), parent)\n\t\t\t\tif (object) {\n\t\t\t\t\tobject[key] = newValue\n\t\t\t\t\tthis.updated(parentEvent, this)\n\t\t\t\t} else {\n\t\t\t\t\tobject = (typeof key === 'number' ? [] : {})\n\t\t\t\t\tobject[key] = newValue\n\t\t\t\t\tparent.is(object, parentEvent)\n\t\t\t\t}\n\t\t\t\treturn this\n\t\t\t}\n\t\t\tthis.fixed = true\n\t\t\tif (newValue && newValue.then && !newValue.notifies) {\n\t\t\t\tassignPromise(this, newValue)\n\t\t\t} else\n\t\t\t\tthis.value = newValue\n\t\t\tthis.updated(new ReplacedEvent(), this)\n\t\t\treturn this\n\t\t},\n\t\tproxy: function(proxiedVariable) {\n\t\t\treturn this.is(proxiedVariable)\n\t\t},\n\t\tnext: function(value) {\n\t\t\t// for ES7 observable compatibility\n\t\t\tthis.put(value)\n\t\t},\n\t\terror: function(error) {\n\t\t\t// for ES7 observable compatibility\n\t\t\tvar listeners = this.listeners\n\t\t\tif (listeners) {\n\t\t\t\t// make a copy, in case they change\n\t\t\t\tlisteners.forEach(function(dependent) {\n\t\t\t\t\t// skip notifying property listeners if we are headed up the parent chain\n\t\t\t\t\tdependent.error(error)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tcomplete: function(value) {\n\t\t\t// for ES7 observable compatibility\n\t\t\tthis.put(value)\n\t\t},\n\t\tsave: function() {\n\t\t\tif (this.copiedFrom) {\n\t\t\t\tthis.copiedFrom.put(this.valueOf())\n\t\t\t\treturn true\n\t\t\t} else {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t\tonValue: function(listener) {\n\t\t\treturn this.subscribe(function(event) {\n\t\t\t\twhen(event.value(), function(value) {\n\t\t\t\t\tlistener(value)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\ttoJSON: function() {\n\t\t\treturn this.valueOf()\n\t\t},\n\t\ttoString: function() {\n\t\t\treturn String(this.valueOf())\n\t\t},\n\t\tto: function (transformFunction, reverse) {\n\t\t\tif (typeof transformFunction !== 'function') {\n\t\t\t\tif (typeof transformFunction === 'object') {\n\t\t\t\t\tthis.to(transformFunction.get, transformFunction.set)\n\t\t\t\t}\n\t\t\t\tthrow new Error('No function provided to transform')\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\ttransformFunction.reverse = function(value, args) {\n\t\t\t\t\t// for direct to, we can just use the first argument\n\t\t\t\t\treturn reverse.call(this, value, args[0])\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (transformFunction.prototype instanceof Variable) {\n\t\t\t\treturn new transformFunction(this)\n\t\t\t}\n\t\t\treturn new (this._Transform || Transform)(this, transformFunction)\n\t\t},\n\t\tmap: function (transformFunction) {\n\t\t\treturn this.to(function(value) {\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\tthrow new Error('map without VArray')\n\t\t\t\t}\n\t\t\t\treturn transformFunction(value)\n\t\t\t})\n\t\t},\n\t\tas: function(Class) {\n\t\t\t// easiest way to cast to a variable class\n\t\t\tvar instance = new Class(this)\n\t\t\tinstance.fixed = true\n\t\t\treturn instance\n\t\t},\n\t\twhileResolving: function(valueUntilResolved, useLastValue) {\n\t\t\treturn valueUntilResolved || arguments.length > 0 ? new WhileResolving(this, valueUntilResolved, useLastValue) :\n\t\t\t\tnew WhileResolving(this, undefined, true) // for zero arguments we default to the last value\n\t\t},\n\t\tvalidate: function(target, schema) {\n\t\t\tif (this.returnedVariable) {\n\t\t\t\treturn this.returnedVariable.validate(target, schema)\n\t\t\t}\n\t\t\tif (this.parent) {\n\t\t\t\treturn this.parent.validate(target.valueOf(), schema)\n\t\t\t}\n\t\t\tif (schema) {\n\t\t\t\tif (schema.type && (schema.type !== typeof target)) {\n\t\t\t\t\treturn ['Target type of ' + typeof target + ' does not match schema type of ' + schema.type]\n\t\t\t\t}\n\t\t\t\tif (schema.required && (target == null || target == '' || (typeof target === 'number' && isNaN(target)))) {\n\t\t\t\t\treturn ['Value is required']\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar valid = []\n\t\t\tvalid.isValid = true\n\t\t\treturn valid\n\t\t},\n\t\tset structured(structure) {\n\t\t\t// find any variable properties and attaches them as a property\n\t\t\tvar keys = Object.keys(this)\n\t\t\tvar properties = keys.length > 1 && this._properties || (this._properties = {})\n\t\t\tfor(var i = 0, l = keys.length; i < l; i++) {\n\t\t\t\tvar key = keys[i]\n\t\t\t\tvar value = this[key]\n\t\t\t\tif (value instanceof Variable) {\n\t\t\t\t\tvar existing = properties[key]\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\tif (existing !== value) {\n\t\t\t\t\t\t\t// an existing property exists, put in it\n\t\t\t\t\t\t\texisting.put(value)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (value.parent) {\n\t\t\t\t\t\t\tif (value.parent === this) {\n\t\t\t\t\t\t\t\tcontinue // just being assigned to another property\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// property already exists with different parent, make a proxy\n\t\t\t\t\t\t\t\tvar newValue = new Variable()\n\t\t\t\t\t\t\t\tnewValue.proxy(value)\n\t\t\t\t\t\t\t\tvalue = newValue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalue.key = key\n\t\t\t\t\t\tvalue.parent = this\n\t\t\t\t\t\tproperties[key] = value\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tobserveObject: function() {\n\t\t\tvar variable = this\n\t\t\treturn when(this.valueOf(), function(object) {\n\t\t\t\tvar listeners = propertyListenersMap.get(object)\n\t\t\t\tif (!listeners) {\n\t\t\t\t\tpropertyListenersMap.set(object, listeners = [])\n\t\t\t\t}\n\t\t\t\tif (listeners.observerCount) {\n\t\t\t\t\tlisteners.observerCount++\n\t\t\t\t}else{\n\t\t\t\t\tlisteners.observerCount = 1\n\t\t\t\t\tvar observer = listeners.observer = lang.observe(object, function(events) {\n\t\t\t\t\t\tfor (var i = 0, l = listeners.length; i < l; i++) {\n\t\t\t\t\t\t\tvar listener = listeners[i]\n\t\t\t\t\t\t\tfor (var j = 0, el = events.length; j < el; j++) {\n\t\t\t\t\t\t\t\tvar event = events[j]\n\t\t\t\t\t\t\t\tlistener._propertyChange(event.name, object)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tif (observer.addKey) {\n\t\t\t\t\t\tfor (var i = 0, l = listeners.length; i < l; i++) {\n\t\t\t\t\t\t\tvar listener = listeners[i]\n\t\t\t\t\t\t\tlistener.eachKey(function(key) {\n\t\t\t\t\t\t\t\tobserver.addKey(key)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tregisterListener(object, variable)\n\t\t\t\treturn {\n\t\t\t\t\tremove: function() {\n\t\t\t\t\t\tderegisterListener(object, variable)\n\t\t\t\t\t\tif (!(--listeners.observerCount)) {\n\t\t\t\t\t\t\tlisteners.observer.remove()\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tdone: function() {\n\t\t\t\t\t\t// deliver changes\n\t\t\t\t\t\tlang.deliverChanges(observer)\n\t\t\t\t\t\tthis.remove()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\tgetCollectionOf: function() {\n\t\t\treturn this.collectionOf || this.returnedVariable && this.returnedVariable.collectionOf || this.constructor.collectionOf\n\t\t},\n\t\t_sN: function(name) {\n\t\t\t// for compilers to set a name\n\t\t\tthis.name = name\n\t\t\treturn this\n\t\t},\n\t\tget _debug() {\n\t\t\tif (this.__debug === undefined) {\n\t\t\t\tthis.__debug = this.name || (Math.random() + '').slice(2)\n\t\t\t}\n\t\t\treturn this.__debug\n\t\t},\n\t\tset _debug(_debug) {\n\t\t\tthis.__debug = _debug\n\t\t}\n\t}\n\tObject.defineProperties(VariablePrototype, {\n\t\t'=': {\n\t\t\tget: function() {\n\t\t\t\treturn this.valueOf(true)\n\t\t\t},\n\t\t\tset: function(value) {\n\t\t\t\tthis.put(value)\n\t\t\t},\n\t\t\tenumerable: true\n\t\t},\n\t\t_lastUpdated: {\n\t\t\tget: function() {\n\t\t\t\treturn new Date(this.getVersion() / 256 + 1500000000000)\n\t\t\t}\n\t\t},\n\t\tschema: {\n\t\t\tget: function() {\n\t\t\t\t// default schema is the constructor\n\t\t\t\tif (this.returnedVariable) {\n\t\t\t\t\treturn this.returnedVariable.schema\n\t\t\t\t}\n\t\t\t\tif (this.parent) {\n\t\t\t\t\tvar parentSchemaProperties = this.parent.schema.properties || this.parent.schema\n\t\t\t\t\treturn parentSchemaProperties && parentSchemaProperties[typeof this.key == 'number' ? 'collectionOf' : this.key]\n\t\t\t\t}\n\t\t\t\treturn this.constructor\n\t\t\t},\n\t\t\tset: function(schema) {\n\t\t\t\t// but allow it to be overriden\n\t\t\t\tObject.defineProperty(this, 'schema', {\n\t\t\t\t\tvalue: schema\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\tvalidation: {\n\t\t\tget: function() {\n\t\t\t\tvar validation = new Validating(this)\n\t\t\t\tObject.defineProperty(this, 'validation', {\n\t\t\t\t\tvalue: validation\n\t\t\t\t})\n\t\t\t\treturn validation\n\t\t\t},\n\t\t\tset: function(validation) {\n\t\t\t\t// but allow it to be overriden\n\t\t\t\tObject.defineProperty(this, 'validation', {\n\t\t\t\t\tvalue: validation\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})\n\n\tfunction changeValue(variable, type, newValue, event) {\n\t\tvar key = variable.key\n\t\tvar parent = variable.parent\n\t\tif (!parent) {\n\t\t\treturn variable.put(newValue, event)\n\t\t}\n\t\tvar object = parent.getValue ? parent.getValue(true) : parent.value\n\t\tif (object != null) {\n\t\t\tif (typeof object != 'object') {\n\t\t\t\t// if the parent is not an object, we can't set anything (that will be retained)\n\t\t\t\tvar error = new Error('Can not set property on non-object')\n\t\t\t\terror.deniedPut = true\n\t\t\t\tthrow error\n\t\t\t}\n\t\t\tvar oldValue = typeof object.get === 'function' ? object.get(key) : object[key]\n\t\t\tif (oldValue === newValue && typeof newValue != 'object') {\n\t\t\t\t// no actual change to make\n\t\t\t\treturn noChange\n\t\t\t}\n\t\t}\n\t\tif (object && typeof object.set === 'function') {\n\t\t\tobject.set(key, newValue, event)\n\t\t} else {\n\t\t\treturn when(object, function(object) {\n\t\t\t\tif (type == RequestChange && oldValue && oldValue.put && (!newValue && newValue.put)) {\n\t\t\t\t\t// if a put and the property value is a variable, assign it to that.\n\t\t\t\t\treturn oldValue.put(newValue, event)\n\t\t\t\t} else {\n\t\t\t\t\tif (newValue && newValue.then && !newValue.notifies) {\n\t\t\t\t\t\t// wait for it to resolve and then assign\n\t\t\t\t\t\treturn newValue.then(function(newValue) {\n\t\t\t\t\t\t\treturn changeValue(variable, type, newValue, event)\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// copy, if this is a copy-on-write variable\n\t\t\t\t\t\t// nothing there yet, create an object to hold the new property\n\t\t\t\t\t\tvar newObject = object == null\n\t\t\t\t\t\t\t? typeof key == 'number' ? [] : {}\n\t\t\t\t\t\t\t: parent.isWritable\n\t\t\t\t\t\t\t\t? lang.copy(\n\t\t\t\t\t\t\t\t\tobject.constructor === Object\n\t\t\t\t\t\t\t\t\t?\t{}\n\t\t\t\t\t\t\t\t\t:\tobject.constructor === Array\n\t\t\t\t\t\t\t\t\t\t?\t[]\n\t\t\t\t\t\t\t\t\t\t: Object.create(Object.getPrototypeOf(object)), object)\n\t\t\t\t\t\t\t\t: object\n\t\t\t\t\t\tnewObject[key] = newValue\n\t\t\t\t\t}\n\t\t\t\t\t// or set the setter/getter\n\t\t\t\t}\n\t\t\t\tevent = event || new ReplacedEvent()\n\t\t\t\tvar parentEvent = new PropertyChangeEvent(key, event, variable)\n\t\t\t\tparentEvent.oldValue = oldValue\n\t\t\t\tparentEvent.target = variable\n\t\t\t\treturn when(newObject === object ?\n\t\t\t\t\t\tparent.updated(parentEvent, variable) :\n\t\t\t\t\t\tparent.put(newObject, parentEvent), function() {\n\t\t\t\t\tvariable.updated(event, variable)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t\tvariable.updated(event, variable)\n\n\t\t// now notify any object listeners\n\t\tvar listeners = propertyListenersMap.get(object)\n\t\t// we need to do it before the other listeners, so we can update it before\n\t\t// we trigger a full clobbering of the object\n\t\tif (listeners) {\n\t\t\tlisteners = listeners.slice(0)\n\t\t\tfor (var i = 0, l = listeners.length; i < l; i++) {\n\t\t\t\tvar listener = listeners[i]\n\t\t\t\tif (listener !== parent) {\n\t\t\t\t\t// now go ahead and actually trigger the other listeners (but make sure we don't do the parent again)\n\t\t\t\t\tlistener.updated(event)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn newValue\n\t}\n\n\n\t// a variable inheritance change goes through its own prototype, so classes/constructor\n\t// can be used as variables as well\n\tfor (var key in VariablePrototype) {\n\t\tObject.defineProperty(Variable, key, Object.getOwnPropertyDescriptor(VariablePrototype, key))\n\t}\n\n\tVariable.as = function(Type) {\n\t\tvar NewType = this.with({})\n\t\tvar target = NewType.prototype\n\t\tvar prototype = Type.prototype\n\t\tdo {\n\t\t\tvar names = Object.getOwnPropertyNames(prototype)\n\t\t\tfor (var i = 0; i < names.length; i++) {\n\t\t\t\tvar name = names[i]\n\t\t\t\tif (!Object.getOwnPropertyDescriptor(target, name)) {\n\t\t\t\t\tObject.defineProperty(target, name, Object.getOwnPropertyDescriptor(prototype, name))\n\t\t\t\t}\n\t\t\t}\n\t\t\tprototype = getPrototypeOf(prototype)\n\t\t} while (prototype && prototype !== Variable.prototype)\n\t\treturn NewType\n\t}\n\n\tVariable.with = function(properties, ExtendedVariable) {\n\t\t// TODO: handle arguments\n\t\tvar Base = this\n\t\tvar prototype\n\t\tif (Object.getOwnPropertyDescriptor(this, 'prototype').writable === false) {\n\t\t\t// extending native class\n\t\t\tExtendedVariable = lang.extendClass(this)\n\t\t\tprototype = ExtendedVariable.prototype\n\t\t} else {\n\t\t\t// extending function/constructor\n\t\t\tif (!ExtendedVariable) {\n\t\t\t\tExtendedVariable = function() {\n\t\t\t\t\tif (this instanceof ExtendedVariable) {\n\t\t\t\t\t\tBase.apply(this, arguments)\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn ExtendedVariable.with(properties)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tprototype = ExtendedVariable.prototype = Object.create(this.prototype)\n\t\t\tprototype.constructor = ExtendedVariable\n\t\t\tsetPrototypeOf(ExtendedVariable, this)\n\t\t}\n\t\treturn ExtendedVariable.assign(properties)\n\t}\n\tVariable.assign = function(properties) {\n\t\tvar prototype = this.prototype\n\t\tfunction toType(value) {\n\t\t\tif (typeof value === 'object') {\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\treturn value[0] ? VArray.of(toType(value[0])) : VArray\n\t\t\t\t} else {\n\t\t\t\t\treturn Variable.with(value)\n\t\t\t\t}\n\t\t\t} else if (typeof value === 'string') { // primitive values\n\t\t\t\treturn VString(value)\n\t\t\t} else if (typeof value === 'number') {\n\t\t\t\treturn VNumber(value)\n\t\t\t} else if (typeof value === 'boolean') {\n\t\t\t\treturn VBoolean(value)\n\t\t\t} else if (typeof value === 'function') {\n\t\t\t\treturn value // hopefully another type\n\t\t\t} else {\n\t\t\t\treturn Variable\n\t\t\t}\n\t\t}\n\t\tif (typeof properties !== 'object') {\n\t\t\tthis.prototype.default = properties\n\t\t\treturn this\n\t\t}\n\t\tfor (var key in properties) {\n\t\t\tvar descriptor = Object.getOwnPropertyDescriptor(properties, key)\n\t\t\tvar value = descriptor.value\n\t\t\tif (typeof value !== 'function' && !this.isPrimitive) {\n\t\t\t\tvalue = toType(value)\n\t\t\t\tif (value.prototype.default !== undefined) {\n\t\t\t\t\tif (!prototype.hasOwnProperty('default')){\n\t\t\t\t\t\tprototype.default = prototype.default ? Object.create(prototype.default) : {}\n\t\t\t\t\t}\n\t\t\t\t\tprototype.default[key] = value.prototype.default\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (typeof value === 'function' && key !== 'collectionOf') {\n\t\t\t\tif (value.notifies) {\n\t\t\t\t\t// variable class\n\t\t\t\t\tfunction getDescriptor(key, Class) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\tvar property = (this._properties || (this._properties = {}))[key]\n\t\t\t\t\t\t\t\tif (!property) {\n\t\t\t\t\t\t\t\t\tthis._properties[key] = property = new Class()\n\t\t\t\t\t\t\t\t\tproperty.key = key\n\t\t\t\t\t\t\t\t\tproperty.parent = this\n\t\t\t\t\t\t\t\t\tif (property.listeners) {\n\t\t\t\t\t\t\t\t\t\t// if it already has listeners, need to reinit it with the parent\n\t\t\t\t\t\t\t\t\t\tproperty.init()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn property\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\tchangeValue(this[key], RequestSet, value)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tenumerable: true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvar descriptor = getDescriptor(key, value)\n\t\t\t\t\tObject.defineProperty(prototype, key, descriptor)\n\t\t\t\t\ttry {\n\t\t\t\t\t\tObject.defineProperty(this, key, descriptor)\n\t\t\t\t\t} catch(error) {\n\t\t\t\t\t\tconsole.warn('Unable to define property', key)\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t} else if (isGenerator(value)) {\n\t\t\t\t\tdescriptor = getGeneratorDescriptor(value)\n\t\t\t\t} else if (value.defineAs) {\n\t\t\t\t\tdescriptor = value.defineAs(key, this)\n\t\t\t\t\tif (!descriptor) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvalue = generalizeMethod(value, key)\n\t\t\t\t}\n\t\t\t}\n\t\t\tObject.defineProperty(prototype, key, descriptor)\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (key in this) {\n\t\t\t\t\tObject.defineProperty(this, key, { value: value, configurable: true, enumerable: true })\n\t\t\t\t} else {\n\t\t\t\t\tthis[key] = value\n\t\t\t\t}\n\t\t\t\tprototype.default\n\t\t\t} else {\n\t\t\t\t// getter/setter\n\t\t\t\tObject.defineProperty(this, key, descriptor)\n\t\t\t}\n\t\t}\n\t\tif (properties && properties.hasOwn) {\n\t\t\thasOwn.call(this, properties.hasOwn)\n\t\t}\n\t\treturn this\n\t}\n\n\tObject.defineProperty(Variable, 'defaultInstance', {\n\t\tget: function() {\n\t\t\treturn this.hasOwnProperty('_defaultInstance') ?\n\t\t\t\tthis._defaultInstance : (\n\t\t\t\t\tthis._defaultInstance = new this(),\n\t\t\t\t\tthis._defaultInstance.subject = defaultContext,\n\t\t\t\t\tthis._defaultInstance)\n\t\t}\n\t})\n\tVariable.hasOwn = function(Target, createInstance) {\n\t\tvar instanceMap = new lang.WeakMap()\n\t\tinstanceMap.createInstance = createInstance\n\t\tvar subjectMap = this.ownedClasses || (this.ownedClasses = new lang.WeakMap())\n\t\tsubjectMap.set(Target, instanceMap)\n\t}\n\n\n\tfunction arrayToModify(variable, callback) {\n\t\treturn when(variable.cachedValue || variable.valueOf(true), function(array) {\n\t\t\t// if there is a typed array\n\t\t\tvar typedArray = variable.valueOf(GET_TYPED_ARRAY)\n\t\t\tvar newArray = array ?\n\t\t\t\tvariable.isWritable ? array.slice(0) : array\n\t\t\t\t: []\n\t\t\treturn callback.call(variable, newArray, function(startingIndex, deleteCount, items) {\n\t\t\t\tif (startingIndex < 0) {\n\t\t\t\t\tstartingIndex = newArray.length + startingIndex\n\t\t\t\t}\n\t\t\t\tif (startingIndex === newArray.length) {\n\t\t\t\t\tvar atEnd = true\n\t\t\t\t}\n\t\t\t\tvar spliceArgs = [startingIndex, deleteCount]\n\t\t\t\tvar results = newArray.splice.apply(newArray, spliceArgs.concat(items))\n\t\t\t\tvar collectionOf = variable.collectionOf\n\t\t\t\tif (typedArray && collectionOf) {\n\t\t\t\t\t// create variable casted items\n\t\t\t\t\tvar untypedItems = items\n\t\t\t\t\titems = items.map(function(item) {\n\t\t\t\t\t\titem = item instanceof collectionOf ? item : collectionOf.from(item)\n\t\t\t\t\t\titem.parent = variable\n\t\t\t\t\t\treturn item\n\t\t\t\t\t})\n\t\t\t\t\titems.untypedItems = untypedItems\n\t\t\t\t\tresults = typedArray.slice(startingIndex, deleteCount + startingIndex)\n\t\t\t\t}\n\t\t\t\tvar event = new SplicedEvent(variable, items, results, startingIndex, deleteCount)\n\t\t\t\tif (atEnd) {\n\t\t\t\t\tevent.atEnd = true\n\t\t\t\t}\n\t\t\t\tvar addedCount = items.length\n\t\t\t\tif (addedCount > 0) {\n\t\t\t\t\tvar arrayPosition\n\t\t\t\t\tfor (var i = newArray.length - addedCount; i > startingIndex;) {\n\t\t\t\t\t\tvar arrayPosition = variable[--i]\n\t\t\t\t\t\tif (arrayPosition) {\n\t\t\t\t\t\t\tvariable[i] = undefined\n\t\t\t\t\t\t\tarrayPosition.key += addedCount\n\t\t\t\t\t\t\tvariable[arrayPosition.key] = arrayPosition\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn when(newArray === array ? // if we are just modifying the original array\n\t\t\t\t\t\tvariable.updated(event, variable) : // then just send out an updated event\n\t\t\t\t\t\tvariable.put(newArray, event), function() { // otherwise put in the new array\n\t\t\t\t\tif (typedArray) {\n\t\t\t\t\t\t// do this afterwards once we have confirmed that it completed successfully\n\t\t\t\t\t\tvariable._typedVersion = variable.version\n\t\t\t\t\t\tresults = typedArray.splice.apply(typedArray, spliceArgs.concat(items))\n\t\t\t\t\t\t// adjust the key positions of any index properties after splice\n\t\t\t\t\t\tif (variable.isWritable) {\n\t\t\t\t\t\t\tfor (var i = startingIndex; i < typedArray.length; i++) {\n\t\t\t\t\t\t\t\ttypedArray[i].key = i\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tvariable.cachedVersion = variable.version // update the cached version, so any version checking will know it has changed\n\t\t\t\t\treturn results\n\t\t\t\t})\n\t\t\t})\n\t\t})\n\t}\n\n\tfunction insertedAt(variable, added, startingIndex, arrayLength, event) {\n\t\tvar addedCount = added.length\n\t\t// adjust the key positions of any index properties after splice\n\t\tif (addedCount > 0) {\n\t\t\tevent = event || new SplicedEvent({\n\t\t\t\tmodifier: variable,\n\t\t\t\tactions: []\n\t\t\t})\n\t\t\tvar arrayPosition\n\t\t\tfor (var i = arrayLength - addedCount; i > startingIndex;) {\n\t\t\t\tvar arrayPosition = variable[--i]\n\t\t\t\tif (arrayPosition) {\n\t\t\t\t\tvariable[i] = undefined\n\t\t\t\t\tarrayPosition.key += addedCount\n\t\t\t\t\tvariable[arrayPosition.key] = arrayPosition\n\t\t\t\t}\n\t\t\t}\n\t\t\t// send out updates\n\t\t\tfor (var i = 0, l = added.length; i < l; i++) {\n\t\t\t\tevent.actions.push({\n\t\t\t\t\tvalue: added[i],\n\t\t\t\t\tindex: i + startingIndex,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\treturn event\n\t}\n\n\tfunction removedAt(variable, removed, startingIndex, removalCount, arrayLength) {\n\t\t// adjust the properties\n\t\tvar i = startingIndex + removalCount\n\t\tvar arrayPosition\n\t\tif (removalCount > 0) {\n\t\t\tvar event = new SplicedEvent({\n\t\t\t\tmodifier: variable,\n\t\t\t\tactions: []\n\t\t\t})\n\t\t\tfor (var i = startingIndex + removalCount; i < arrayLength + removalCount; i++) {\n\t\t\t\tvar arrayPosition = variable[i]\n\t\t\t\tif (arrayPosition) {\n\t\t\t\t\tvariable[i] = undefined\n\t\t\t\t\tarrayPosition.key -= removalCount\n\t\t\t\t\tvariable[arrayPosition.key] = arrayPosition\n\t\t\t\t}\n\t\t\t}\n\t\t\t// send out updates\n\t\t\tfor (var i = 0; i < removalCount; i++) {\n\t\t\t\tevent.actions.push({\n\t\t\t\t\tpreviousIndex: startingIndex,\n\t\t\t\t\toldValue: removed[i]\n\t\t\t\t})\n\t\t\t}\n\t\t\tvariable.cachedVersion = variable.version // update the cached version so it doesn't need to be recomputed\n\t\t}\n\t\treturn event\n\t}\n\n\tif (typeof Symbol !== 'undefined') {\n\t\tVariable.prototype[Symbol.iterator] = function() {\n\t\t\tvar iterator = this.valueOf(GET_TYPED_OR_UNTYPED_ARRAY)[Symbol.iterator]()\n\t\t\tvar variable = this\n\t\t\tvar collectionOf = this.collectionOf\n\t\t\tif (collectionOf) {\n\t\t\t\tvar parent = this\n\t\t\t\tvar i = 0\n\t\t\t\treturn {\n\t\t\t\t\tnext: function() {\n\t\t\t\t\t\tvar result = iterator.next()\n\t\t\t\t\t\tif (!result.done) {\n\t\t\t\t\t\t\tresult.value = variable.property(i++, collectionOf)\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn iterator\n\t\t}\n\t}\n\n\tvar VMap = Variable.VMap = lang.compose(Variable, function(value){\n\t\tif (typeof value !== 'undefined') {\n\t\t\tthis.value = value\n\t\t}\n\t}, {\n\t\tfixed: true,\n\t\tisWritable: false,\n\t\t// TODO: Move all the get and set functionality for maps out of Variable\n\t\tproperty: function(key, PropertyClass) {\n\t\t\tvar properties = this._properties || (this._properties = new Map())\n\t\t\tvar propertyVariable = properties.get(key)\n\t\t\tif (!propertyVariable) {\n\t\t\t\t// create the property variable\n\t\t\t\tpropertyVariable = new (PropertyClass || this.PropertyClass)()\n\t\t\t\tpropertyVariable.key = key\n\t\t\t\tpropertyVariable.parent = this\n\t\t\t\tif (propertyVariable.listeners) {\n\t\t\t\t\t// if it already has listeners, need to reinit it with the parent\n\t\t\t\t\tpropertyVariable.init()\n\t\t\t\t}\n\t\t\t\tproperties.set(key, propertyVariable)\n\t\t\t}\n\t\t\treturn propertyVariable\n\t\t}\n\t})\n\n\tvar Transform = Variable.Transform = lang.compose(Variable, function Transform(source, transform, sources, dontCache) {\n\t\tif (source !== undefined || sources) {\n\t\t\tthis.source = source\n\t\t}\n\t\tif (transform) {\n\t\t\tthis.transform = transform\n\t\t\tif (sources) {\n\t\t\t\tfor (var i = 1, l = sources.length; i < l; i++) {\n\t\t\t\t\tthis['source' + i] = sources[i]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (dontCache) {\n\t\t\tthis.dontCache = true\n\t\t}\n\t}, {\n\t\tgetTransform: function() {\n\t\t\treturn this.transform && this.transform.valueOf()\n\t\t},\n\t\tgetValue: function() {\n\t\t\t// first check to see if we have the variable already computed\n\t\t\tif (this.readyState == 'invalidated') {\n\t\t\t\tthis.readyState = nextVersion.toString()\n\t\t\t} else if (isFinite(this.readyState)) {\n\t\t\t\t// will un-invalidate this later (contextualizedVariable.readyState = 'up-to-date')\n\t\t\t} else if ((this.listeners && this.readyState === 'up-to-date' || this.staysUpdated) && this.cachedVersion > 0) {\n\t\t\t\t// it is live, so we can shortcut and just return the cached value\n\t\t\t\tif (context) {\n\t\t\t\t\tcontext.setVersion(this.cachedVersion)\n\t\t\t\t\tif (context.ifModifiedSince >= this.cachedVersion && !this.returnedVariable) {\n\t\t\t\t\t\treturn NOT_MODIFIED\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.promise || this.cachedValue\n\t\t\t}\n\t\t\t/*if (!this.hasOwnProperty('source1') && context) {\n\t\t\t\t// TODO: Not sure if this is a helpful optimization or not\n\t\t\t\t// if we have a single source, we can use ifModifiedSince\n\t\t\t\tif (!contextualizedVariable && this.context && this.context.matches(context)) {\n\t\t\t\t\t\tcontextualizedVariable = this\n\t\t\t\t\t}\n\t\t\t}*/\n\t\t\tvar readyState = this.readyState\n\t\t\tvar parentContext = context\n\t\t\tvar transformContext = context = context ? context.newContext() : new Context()\n\t\t\tvar args = []\n\t\t\tvar isAsyncInputs\n\t\t\ttry {\n\t\t\t\tif (this.version) {\n\t\t\t\t\t// get the version in there\n\t\t\t\t\ttransformContext.setVersion(this.version)\n\t\t\t\t}\n\t\t\t\tif (this && this.cachedVersion == this.version && this.cachedVersion > 0 && !this.hasOwnProperty('source1')) {\n\t\t\t\t\ttransformContext.ifModifiedSince = this.cachedVersion\n\t\t\t\t}\n\t\t\t\t// TODO: var hasCustomTransformFunction = this.transform && this.transform.value === ObjectValueOf\n\t\t \t\tvar transform = this.getTransform()\n\n\t\t\t\tvar argument, argumentName, lastPromiseResult, resolved = []\n\t\t\t\tvar afterPromiseResolved\n\t\t\t\tvar remaining = 1\n\t\t\t\tvar variable = this\n\t\t\t\tvar whenArgumentResolved = function(result) {\n\t\t\t\t\tresolved[this.__index || 0] = result\n\t\t\t\t\tremaining--\n\t\t\t\t\tif(remaining === 0) {\n\t\t\t\t\t\treturn whenAllResolved()\n\t\t\t\t\t}else{\n\t\t\t\t\t\treturn this.__previousPromiseResult\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var i = 0; (argument = this[argumentName = i > 0 ? 'source' + i : 'source']) || argumentName in this; i++) {\n\t\t\t\t\tif (argument) {\n\t\t\t\t\t\tvar result = argument.valueOf(GET_VALID_TYPE)\n\t\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\t\tremaining++\n\t\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\tlastPromiseResult = result.then(whenArgumentResolved)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlastPromiseResult = result.then(whenArgumentResolved.bind({\n\t\t\t\t\t\t\t\t\t__index: i,\n\t\t\t\t\t\t\t\t\t__previousPromiseResult: lastPromiseResult\n\t\t\t\t\t\t\t\t}))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolved[i] = result\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolved[i] = argument\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (--remaining === 0) {\n\t\t\t\t\treturn whenAllResolved()\n\t\t\t\t\t// everything resolved, fast path\n\t\t\t\t}\n\t\t\t\tisAsyncInputs = true\n\t\t\t\tfunction whenAllResolved() {\n\t \t\t\t\tif (transformContext.ifModifiedSince !== undefined) {\n\t \t\t\t\t\ttransformContext.ifModifiedSince = undefined\n\t \t\t\t\t}\n\t\t\t\t\tvar version = transformContext.version\n\t\t\t\t\tif (variable.cachedVersion >= version || resolved[0] == NOT_MODIFIED) { // note that cached version can get \"ahead\" of `version` of all dependencies, in cases where the transform ends up executing an valueOf() that advances the resolution context version number.\n\t\t\t\t\t\t// get it out of the cache\n\t\t\t\t\t\tif (parentContext) {\n\t\t\t\t\t\t\tparentContext.setVersion(version)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (parentContext && parentContext.ifModifiedSince >= version &&\n\t\t\t\t\t\t\t\tparentContext.ifModifiedSince >= variable.cachedVersion &&\n\t\t\t\t\t\t\t\t!variable.returnedVariable) {\n\t\t\t\t\t\t\treturn NOT_MODIFIED\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn variable.promise || promiseSafeResult(variable.cachedValue)\n\t\t\t\t\t}\n\n\t\t\t\t\tvar result = transform ? transform.apply(variable, resolved) : resolved[0]\n\t\t\t\t\tvar isPromise = result && result.then && !result.notifies\n\t\t\t\t\tversion = transformContext.version\n\n\t\t\t\t\tif (isPromise) {\n\t\t\t\t\t\tif (variable.promise && variable.promise.abort) {\n\t\t\t\t\t\t\t// promises with an abort method can be aborted and replaced with the latest result\n\t\t\t\t\t\t\tvariable.promise.replacedResolutionWith = result\n\t\t\t\t\t\t\tvariable.promise.abort('Cancelled due to updated value being available')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (variable.readyState === readyState && !variable.dontCache) {\n\t\t\t\t\t\t\tvariable.cachedVersion = version\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar promise = variable.promise = result = result.then(function(resolved) {\n\t\t\t\t\t\t\tif (promise === variable.promise) { // make sure we are still the latest promise\n\t\t\t\t\t\t\t\tvariable.promise = null\n\t\t\t\t\t\t\t\tonResolve(resolved, transformContext.version)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn resolved\n\t\t\t\t\t\t}, function(error) {\n\t\t\t\t\t\t\tif (promise === variable.promise) { // make sure we are still the latest promise\n\t\t\t\t\t\t\t\t// clear out the cache on an error\n\t\t\t\t\t\t\t\tvariable.promise = null\n\t\t\t\t\t\t\t\tvariable.lastError = error\n\t\t\t\t\t\t\t\tonResolve(null, 0)\n\t\t\t\t\t\t\t} else if (promise.replacedResolutionWith) {\n\t\t\t\t\t\t\t\t// if it was aborted and substituted with the latest promise, return that value\n\t\t\t\t\t\t\t\treturn promise.replacedResolutionWith\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthrow error // rethrow so it isn't silenced\n\t\t\t\t\t\t})\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonResolve(result, version)\n\t\t\t\t\t}\n\t\t\t\t\treturn promiseSafeResult(result)\n\n\t\t\t\t\tfunction promiseSafeResult(result) {\n\t\t\t\t\t\tif (isAsyncInputs && result && result.notifies) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t__variable: result\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result\n\t\t\t\t\t}\n\t\t\t\t\tfunction onResolve(result, version) {\n\t\t\t\t\t\tif (variable.readyState === readyState && !variable.dontCache) {\n\t\t\t\t\t\t\tif (parentContext) {\n\t\t\t\t\t\t\t\tparentContext.setVersion(version)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvariable.cachedVersion = version\n\t\t\t\t\t\t\tvariable.cachedValue = result\n\t\t\t\t\t\t\tvariable.readyState = (variable.listeners || variable.staysUpdated || parentContext && parentContext.notifies) && version !== 0 ? 'up-to-date' : '' // mark it as up-to-date now\n\t\t\t\t\t\t}/* else {\n\t\t\t\t\t\t\tconsole.log('ready state different than when the variable trasnform started ', variable, variable.readyState, readyState)\n\t\t\t\t\t\t}*/\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lastPromiseResult.abort) {\n\t\t\t\t\t// if abort was propagated, don't propagate past the variable, as we want to finish our resolution of the value\n\t\t\t\t\tlastPromiseResult.abort = null\n\t\t\t\t}\n\t\t\t\treturn lastPromiseResult\n\t\t\t} finally {\n\t\t\t\tif (parentContext) {\n\t\t\t\t\tparentContext.setVersion(transformContext.version)\n\t\t\t\t}\n\t \t\t\tcontext = parentContext\n\t \t\t}\n\t \t},\n\n\t\tforDependencies: function(callback) {\n\t\t\t// depend on the args\n\t\t\tVariable.prototype.forDependencies.call(this, callback)\n\t\t\tvar argument, argumentName\n\t\t\tfor (var i = 0; (argument = this[argumentName = i > 0 ? 'source' + i : 'source']) || argumentName in this; i++) {\n\t\t\t\tif (argument && argument.notifies) {\n\t\t\t\t\tcallback(argument)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdated: function(updateEvent, by, isDownstream) {\n\t\t\tthis.readyState = 'invalidated'\n\t\t\tif (this.promise && !this.promise.abort) { // if it can be aborted, keep it around for better network cleanup, otherwise remove reference for immediate memory cleanup\n\t\t\t\tif (this.cachedVersion > 0) {\n\t\t\t\t\tthis.cachedVersion = 0\n\t\t\t\t}\n\t\t\t\tthis.promise = null\n\t\t\t}\n\t\t\tif (by !== this.returnedVariable && updateEvent && updateEvent.type !== 'replaced') {\n\t\t\t\t// search for the output in the sources\n\t\t\t\tvar argument, argumentName\n\t\t\t\tfor (var i = 0; (argument = this[argumentName = i > 0 ? 'source' + i : 'source']) || argumentName in this; i++) {\n\t\t\t\t\tif (argument === by) {\n\t\t\t\t\t\t// if one of the args was updated, we need to do a full refresh (we can't compute differential events without knowledge of how the mapping function works)\n\t\t\t\t\t\tupdateEvent = new ReplacedEvent(updateEvent)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn Variable.prototype.updated.call(this, updateEvent, by, isDownstream)\n\t\t},\n\n\t\tcleanup: function() {\n\t\t\tif (this.readyState === 'up-to-date' && !this.staysUpdated) {\n\t\t\t\tthis.readyState = '' // once there are no listeners, we can't guarantee we are up-to-date\n\t\t\t}\n\t\t\tVariable.prototype.cleanup.call(this)\n\t\t},\n\n\t\tgetUpdates: function(since) {\n\t\t\t// this always issues updates, nothing incremental can flow through it\n\t\t\tif (!since || since.version < getVersion()) {\n\t\t\t\treturn [new ReplacedEvent()]\n\t\t\t}\n\t\t},\n\n\t\tgetArguments: function() {\n\t\t\tvar args = []\n\t\t\tvar argument, argumentName\n\t\t\tfor (var i = 0; (argument = this[argumentName = i > 0 ? 'source' + i : 'source']) || argumentName in this; i++) {\n\t\t\t\targs.push(argument)\n\t\t\t}\n\t\t\treturn args\n\t\t},\n\t\tput: function(value, event) {\n\t\t\tvar call = this\n\t\t\treturn whenStrict(this.getValue(), function(originalValue) {\n\t\t\t\tif (originalValue === value && typeof value != 'object') {\n\t\t\t\t\treturn noChange\n\t\t\t\t}\n\t\t\t\tvar transform = call.transform.valueOf()\n\t\t\t\tif (transform.reverse) {\n\t\t\t\t\t(transform.reverse).call(call, value, call.getArguments())\n\t\t\t\t\treturn call.updated(event)\n\t\t\t\t} else if (originalValue && originalValue.put) {\n\t\t\t\t\treturn originalValue.put(value, event)\n\t\t\t\t} else {\n\t\t\t\t\tvar error = new Error('Can not put value into a one-way transform, that lacks a reversal')\n\t\t\t\t\terror.deniedPut = true\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t\tsetReverse: function(reverse) {\n\t\t\tthis.transform.valueOf().reverse = reverse\n\t\t\treturn this\n\t\t}\n\t})\n\tObject.defineProperty(Transform.prototype, 'isWritable', {\n\t\tget: function() {\n\t\t\treturn this.transform && !!this.transform.reverse\n\t\t}\n\t})\n\n\tvar RESOLUTION_UPDATE = {}\n\t\tWhileResolving = lang.compose(Transform, function WhileResolving(variable, defaultValue, useLastValue) {\n\t\tthis.source = variable\n\t\tif (defaultValue !== undefined) {\n\t\t\tthis.default = defaultValue\n\t\t}\n\t\tif (useLastValue) {\n\t\t\tthis.useLastValue = true\n\t\t}\n\t}, {\n\t\tfixed: true,\n\t\tgetValue: function() {\n\t\t\tvar result = Transform.prototype.getValue.call(this)\n\t\t\tif (result && result.then) {\n\t\t\t\tvar version = this.version\n\t\t\t\tvar variable = this\n\t\t\t\tresult.then(function(value) {\n\t\t\t\t\tif (version === variable.version) {\n\t\t\t\t\t\tVariable.prototype.updated.call(variable)\n\t\t\t\t\t\tvariable.cachedVersion = variable.version\n\t\t\t\t\t}\n\t\t\t\t}, function (error) {\n\t\t\t\t\t// we have to go into an error state so the subsequent request can throw\n\t\t\t\t\tconsole.error('Variable resolution failed', error)\n\t\t\t\t\tif (version === variable.version) {\n\t\t\t\t\t\tVariable.prototype.updated.call(variable)\n\t\t\t\t\t\tvariable.cachedVersion = variable.version\n\t\t\t\t\t\tvariable.cachedValue = 'Error occurred: ' + error\n\t\t\t\t\t\tvariable.readyState = 'up-to-date'\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\treturn this.useLastValue && 'cachedValue' in this ? this.cachedValue : this.default\n\t\t\t}\n\t\t\treturn result\n\t\t},\n\t\tput: function(value, event) {\n\t\t\treturn this.source.put(value, event)\n\t\t}\n\t})\n\n\tvar ContextualTransform = lang.compose(Transform, function ContextualTransform() {\n\t\tTransform.apply(this, arguments)\n\t}, {\n\t\tgetValue: function() {\n\t\t\t// first check to see if we have the variable already computed\n\t\t\tvar contextualizedVariable = context ? context.getContextualized(this) : this\n\t\t\tif (contextualizedVariable && contextualizedVariable !== this) {\n\t\t\t\treturn contextualizedVariable.getValue()\n\t\t\t}\n\t\t\treturn Transform.prototype.getValue.call(this)\n\t\t},\n\t\t_needsContextualization: true\n\t})\n\n\tvar Item = lang.compose(Variable, function Item(value, content) {\n\t\tthis.value = value\n\t\tthis.collection = content\n\t}, {})\n\n\tvar ContextualizedVariable = lang.compose(Variable, function ContextualizedVariable(generic, subject) {\n\t\tthis.generic = generic\n\t\tthis.subject = subject\n\t}, {\n\t\tvalueOf: function() {\n\t\t\t// TODO: Lookup Context type for all of these using registry or something\n\t\t\tvar subject = this.subject\n\t\t\tvar context = subject.getContextualized ? subject : new Context(subject)\n\t\t\tvar generic = this.generic\n\t\t\treturn context.executeWithin(function() {\n\t\t\t\treturn generic.valueOf()\n\t\t\t})\n\t\t},\n\n\t\tforDependencies: function(callback) {\n\t\t\tthis.sources && this.sources.forEach(callback)\n\t\t},\n\n\t\tgetVersion: function() {\n\t\t\tvar version = Variable.prototype.getVersion.call(this)\n\t\t\tvar sources = this.sources || 0\n\t\t\tfor (var i = 0, l = sources.length; i < l; i++) {\n\t\t\t\tvar source = sources[i]\n\t\t\t\tif (source.getFullVersion) {\n\t\t\t\t\tversion = Math.max(version, source.getFullVersion())\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn version\n\t\t},\n\n\t\tput: function(value, event) {\n\t\t\tvar subject = this.subject\n\t\t\treturn this.generic.put(value, event)\n\t\t}\n\t})\n\n\tvar VArray = lang.compose(Variable, function VArray(value) {\n\t\treturn makeSubVar(this, value, VArray)\n\t}, {\n\t\tvalueOf: function(mode) {\n\t\t\tvar value = Variable.prototype.valueOf.call(this, mode)\n\t\t\tvar varray = this\n\t\t\treturn when(value, function(array) {\n\t\t\t\tif (mode && mode.getTyped) {\n\t\t\t\t\tif (mode.allowUntyped) {\n\t\t\t\t\t\tif (!array) {\n\t\t\t\t\t\t\treturn []\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn // untyped not allowed\n\t\t\t\t\t}\n\t\t\t\t} else if (!array) {\n\t\t\t\t\tif (mode && mode.ensureValidType) {\n\t\t\t\t\t\treturn []\n\t\t\t\t\t}\n\t\t\t\t\treturn array\n\t\t\t\t}\n\t\t\t\tif (varray.sortFunction && varray._sortedArray != array) {\n\t\t\t\t\t// we have a sort function, and a new incoming array, need to resort\n\t\t\t\t\tvar reversed = varray.reversed\n\t\t\t\t\tvar sortFunction = varray.sortFunction\n\t\t\t\t\tvarray.sortFunction = null // null this so we don't reenter here\n\t\t\t\t\tarray = varray.sort(sortFunction)\n\t\t\t\t\tif (reversed) {\n\t\t\t\t\t\tvarray.reversed()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn array\n\t\t\t})\n\t\t},\n\t\tforEach: function(callback, instance) {\n\t\t\treturn when(this.valueOf(GET_TYPED_OR_UNTYPED_ARRAY), function(array) {\n\t\t\t\tarray.forEach(callback, instance)\n\t\t\t})\n\t\t},\n\t\tsplice: function(start, deleteCount) {\n\t\t\tvar args = arguments\n\t\t\treturn arrayToModify(this, function(array, doSplice) {\n\t\t\t\treturn doSplice(start, deleteCount, [].slice.call(args, 2))\n\t\t\t})\n\t\t},\n\t\tpush: function() {\n\t\t\tvar args = arguments\n\t\t\treturn arrayToModify(this, function(array, doSplice) {\n\t\t\t\treturn when(doSplice(array.length, 0, [].slice.call(args)), function(results) {\n\t\t\t\t\treturn array.length\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tunshift: function() {\n\t\t\tvar args = arguments\n\t\t\treturn arrayToModify(this, function(array, doSplice) {\n\t\t\t\treturn when(doSplice(0, 0, [].slice.call(args)), function(results) {\n\t\t\t\t\treturn array.length\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tpop: function() {\n\t\t\treturn arrayToModify(this, function(array, doSplice) {\n\t\t\t\treturn when(doSplice(array.length - 1, 1, []), function(results) {\n\t\t\t\t\treturn results[0]\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tshift: function() {\n\t\t\treturn arrayToModify(this, function(array, doSplice) {\n\t\t\t\treturn when(doSplice(0, 1, []), function(results) {\n\t\t\t\t\treturn results[0]\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t\tsort: function(compareFunction) {\n\t\t\tvar variable = this\n\t\t\treturn when(this.valueOf(true), function(array) {\n\t\t\t\tvar typedArray = variable.valueOf(GET_TYPED_ARRAY)\n\t\t\t\tvar newArray\n\t\t\t\tif (!array)\n\t\t\t\t\tnewArray = array = []\n\t\t\t\tif (typedArray) {\n\t\t\t\t\tvar combined = []\n\t\t\t\t\tfor (var l = array.length, i = 0; i < l; i++) {\n\t\t\t\t\t\tcombined.push({\n\t\t\t\t\t\t\ttyped: typedArray[i],\n\t\t\t\t\t\t\tuntyped: array[i]\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tcombined.sort(function(a, b) {\n\t\t\t\t\t\treturn compareFunction(a.typed, b.typed)\n\t\t\t\t\t})\n\t\t\t\t\tarray.splice(0, array.length) // clear and replace with sorted untyped values\n\t\t\t\t\tarray.push.apply(array, combined.map(function(combined) {\n\t\t\t\t\t\treturn combined.untyped\n\t\t\t\t\t}))\n\t\t\t\t\tvariable._typedArray = combined.map(function(combined) {\n\t\t\t\t\t\treturn combined.typed\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tarray.sort(compareFunction)\n\t\t\t\t}\n\t\t\t\tif (variable.source) {\n\t\t\t\t\tvariable.sortFunction = compareFunction\n\t\t\t\t\tvariable._sortedArray = array\n\t\t\t\t\tif (variable.reversed) {\n\t\t\t\t\t\tvariable.reversed = false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newArray)\n\t\t\t\t\tvariable.put(newArray)\n\t\t\t\telse\n\t\t\t\t\tvariable.updated() // this is treated as an in-place update with no upstream impact\n\t\t\t\tvariable.cachedVersion = variable.version\n\t\t\t\tif (variable._typedArray) {\n\t\t\t\t\tvariable._typedVersion = variable.version\n\t\t\t\t}\n\t\t\t\treturn array\n\t\t\t})\n\t\t},\n\t\treverse: function() {\n\t\t\tvar variable = this\n\t\t\treturn when(this.valueOf(GET_TYPED_OR_UNTYPED_ARRAY), function(array) {\n\t\t\t\tarray.reverse()\n\t\t\t\tif (variable.source) {\n\t\t\t\t\tvariable.reversed = !variable.reversed\n\t\t\t\t}\n\t\t\t\tvariable.updated() // this is treated as an in-place update with no upstream impact\n\t\t\t\treturn array\n\t\t\t})\n\t\t},\n\t\tslice: function(start, end) {\n\t\t\treturn when(this.valueOf(true), function(array) {\n\t\t\t\treturn (array || []).slice(start, end)\n\t\t\t})\n\t\t},\n\t\tindexOf: function(idOrValue) {\n\t\t\t// TODO: After a certain threshold of accesses we should build an index for O(1) time access\n\t\t\tvar array = this.valueOf(GET_TYPED_OR_UNTYPED_ARRAY)\n\t\t\treturn array.indexOf(idOrValue)\n\t\t},\n\t\tincludes: function(idOrValue) {\n\t\t\treturn this.indexOf(idOrValue) > -1\n\t\t},\n\t\t// id-based methods:\n\t\tfor: function(idOrValue) {\n\t\t\tif (this.source) {\n\t\t\t\treturn this.source.for(idOrValue)\n\t\t\t}\n\t\t\tvar i = this.indexOf(idOrValue)\n\t\t\tvar array = this.valueOf()\n\t\t\tvar instance = this.collectionOf.from(array[i] || {})\n\t\t\tinstance.id = idOrValue\n\t\t\treturn instance\n\t\t},\n\t\t// Set methods:\n\t\tadd: function(value) {\n\t\t\tif (this.indexOf(value) === -1) {\n\t\t\t\tthis.push(value)\n\t\t\t}\n\t\t},\n\t\tdelete: function(instanceOrId) {\n\t\t\tvar removeIndex = this.indexOf(instanceOrId)\n\t\t\tif (removeIndex > -1) {\n\t\t\t\tthis.splice(removeIndex, 1)\n\t\t\t}\n\t\t\treturn this\n\t\t},\n\t\tclear: function() {\n\t\t\tthis.is([])\n\t\t},\n\t\thas: function(idOrValue) { // same as includes\n\t\t\treturn this.indexOf(idOrValue) > -1\n\t\t}\n\t})\n\tObject.defineProperty(VArray.prototype, 'length', {\n\t\tget: function() {\n\t\t\tif (typeof this !== 'function') {\n\t\t\t\tvar properties = this._properties || (this._properties = {})\n\t\t\t\tif (!properties.length) {\n\t\t\t\t\tvar length = properties.length = new VNumber()\n\t\t\t\t\tlength.key = 'length'\n\t\t\t\t\tlength.parent = this\n\t\t\t\t\tObject.defineProperty(this, 'length', {\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tvalue: length\n\t\t\t\t\t})\n\t\t\t\t\treturn length\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tconfigurable: true,\n\t\tset: function(length) {\n\t\t\t// allow overriding\n\t\t\tthis.value.length = length\n\t\t},\n\t})\n\tVArray.of = function(collectionOf) {\n\t\tvar ArrayClass = VCollection({collectionOf: collectionOf})\n\t\tif (this !== VArray) {\n\t\t\t// new operator\n\t\t\treturn new ArrayClass()\n\t\t}\n\t\treturn ArrayClass\n\t}\n\n\tfunction setToArray(set) {\n\t\tvar newArray = []\n\t\tif (set.forEach) {\n\t\t\tset.forEach(function(item) {\n\t\t\t\tnewArray.push(item)\n\t\t\t})\n\t\t}\n\t\treturn newArray\n\t}\n\n\tvar getValue\n\tvar GeneratorVariable = lang.compose(Transform, function ReactiveGenerator(generator){\n\t\tthis.generator = generator\n\t}, {\n\t\ttransform: {\n\t\t\tvalueOf: function() {\n\t\t\t\tvar generatorContext = context\n\t\t\t\tvar resuming\n\t\t\t\treturn next\n\t\t\t\tfunction next() {\n\t\t\t\t\tvar nextValue\n\t\t\t\t\tvar i\n\t\t\t\t\tvar generatorIterator\n\t\t\t\t\tvar isThrowing\n\t\t\t\t\tif (resuming) {\n\t\t\t\t\t\t// resuming from a promise\n\t\t\t\t\t\tgeneratorIterator = resuming.iterator\n\t\t\t\t\t\ti = resuming.i\n\t\t\t\t\t\tnextValue = resuming.value\n\t\t\t\t\t\tif (nextValue && nextValue.then) {\n\t\t\t\t\t\t\tthrow new Error('Generator resumed with promise or variable', nextValue)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tisThrowing = resuming.isThrowing\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (generatorContext) {\n\t\t\t\t\t\t\t// must restart the context, if the input values had previously been checked and hashed against this context, must restart them.\n\t\t\t\t\t\t\tgeneratorContext.restart()\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti = 0\n\t\t\t\t\t\tgeneratorIterator = this.generator()\n\t\t\t\t\t}\n\n\t\t\t\t\tdo {\n\t\t\t\t\t\tvar stepReturn = generatorIterator[isThrowing ? 'throw' : 'next'](nextValue)\n\t\t\t\t\t\tif (stepReturn.done) {\n\t\t\t\t\t\t\tvar oldSources = this.sources || []\n\t\t\t\t\t\t\tvar newLength = i\n\t\t\t\t\t\t\tvar newSources = []\n\t\t\t\t\t\t\twhile(this[argumentName = i > 0 ? 'source' + i : 'source']) {\n\t\t\t\t\t\t\t\t// clear out old properties\n\t\t\t\t\t\t\t\tthis[argumentName] = undefined\n\t\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (i = 0; i < newLength; i++) {\n\t\t\t\t\t\t\t\t// create new array\n\t\t\t\t\t\t\t\tvar argumentName = i > 0 ? 'source' + i : 'source'\n\t\t\t\t\t\t\t\tif (this[argumentName] && this[argumentName].notifies) {\n\t\t\t\t\t\t\t\t\tnewSources.push(this[argumentName])\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfor (i = 0; i < oldSources.length; i++) {\n\t\t\t\t\t\t\t\tif (newSources.indexOf(oldSources[i]) == -1) {\n\t\t\t\t\t\t\t\t\toldSources[i].stopNotifies(this)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis.sources = newSources\n\t\t\t\t\t\t\treturn stepReturn.value\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextValue = stepReturn.value\n\t\t\t\t\t\t// compare with the arguments from the last\n\t\t\t\t\t\t// execution to see if they are the same\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tvar argumentName = i > 0 ? 'source' + i : 'source'\n\t\t\t\t\t\t\tif (this[argumentName] !== nextValue || this[argumentName] === undefined) {\n\t\t\t\t\t\t\t\t// subscribe if it is a variable\n\t\t\t\t\t\t\t\tif (nextValue && nextValue.notifies) {\n\t\t\t\t\t\t\t\t\tif (this.listeners) {\n\t\t\t\t\t\t\t\t\t\tnextValue.notifies(this)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tthis[argumentName] = nextValue\n\t\t\t\t\t\t\t\t} else if (typeof nextValue === 'function' && isGenerator(nextValue)) {\n\t\t\t\t\t\t\t\t\tresuming = {\n\t\t\t\t\t\t\t\t\t\ti: i,\n\t\t\t\t\t\t\t\t\t\titerator: nextValue()\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tnext.call(this)\n\t\t\t\t\t\t\t\t\ti = resuming.i\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tthis[argumentName] = null\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ti++\n\t\t\t\t\t\t\tif (nextValue && nextValue.then) {\n\t\t\t\t\t\t\t\t// if it is a promise or variable, we will wait on it\n\t\t\t\t\t\t\t\tvar variable = this\n\t\t\t\t\t\t\t\tresuming = {\n\t\t\t\t\t\t\t\t\ti: i,\n\t\t\t\t\t\t\t\t\titerator: generatorIterator\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar isSync = null\n\t\t\t\t\t\t\t\t// and return the promise so that the next caller can wait on this\n\t\t\t\t\t\t\t\tvar promise = nextValue.then(function(value) {\n\t\t\t\t\t\t\t\t\tif (isSync !== false) {\n\t\t\t\t\t\t\t\t\t\tisSync = true\n\t\t\t\t\t\t\t\t\t\tnextValue = value\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tresuming.value = value\n\t\t\t\t\t\t\t\t\tif (generatorContext) {\n\t\t\t\t\t\t\t\t\t\treturn generatorContext.executeWithin(next.bind(variable))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn next.call(variable)\n\t\t\t\t\t\t\t\t}, function(error) {\n\t\t\t\t\t\t\t\t\tresuming.value = error\n\t\t\t\t\t\t\t\t\tresuming.isThrowing = true\n\t\t\t\t\t\t\t\t\tif (generatorContext) {\n\t\t\t\t\t\t\t\t\t\treturn generatorContext.executeWithin(next.bind(variable))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\treturn next.call(variable)\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\tif (!isSync) {\n\t\t\t\t\t\t\t\t\tisSync = false\n\t\t\t\t\t\t\t\t\treturn promise\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tisThrowing = false\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tisThrowing = true\n\t\t\t\t\t\t\tnextValue = error\n\t\t\t\t\t\t}\n\t\t\t\t\t} while(true)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\tvar Validating = lang.compose(Transform, function(source) {\n\t\tthis.source = source\n\t}, {\n\t\ttransform: function(target) {\n\t\t\tvar target = this.source\n\t\t\treturn target && target.validate(target, target.schema)\n\t\t}\n\t})\n\n\tfunction makeSubVar(instance, value, Type) {\n\t\tif (instance instanceof Variable) {\n\t\t\tVariable.call(instance, value)\n\t\t} else {\n\t\t\treturn Type.with(value)\n\t\t}\n\t}\n\n\tfunction objectUpdated(object) {\n\t\t// simply notifies any subscribers to an object, that it has changed\n\t\tvar listeners = propertyListenersMap.get(object)\n\t\tif (listeners) {\n\t\t\tfor (var i = 0, l = listeners.length; i < l; i++) {\n\t\t\t\tlisteners[i]._propertyChange(null, object)\n\t\t\t}\n\t\t}\n\t}\n\n\tvar argsToArray = {\n\t\tapply: function(instance, args) {\n\t\t\treturn args\n\t\t},\n\t\treverse: function(value, args) {\n\t\t\t// reverse the conversion, putting an array of values into the source inputs\n\t\t\treturn args.map(function(arg, i) {\n\t\t\t\treturn arg.put(value[i])\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction all(array, transform) {\n\t\t// This is intended to mirror Promise.all. It actually takes\n\t\t// an iterable, but for now we are just looking for array-like\n\t\tif (array instanceof Array) {\n\t\t\tvar hasTransform = typeof transform === 'function'\n\t\t\tif (array.length > 0 || hasTransform) {\n\t\t\t\t// TODO: Return VArray Transform\n\t\t\t\treturn new Transform(array[0], hasTransform ? transform : argsToArray, array, !hasTransform)\n\t\t\t} else {\n\t\t\t\treturn new VArray([])\n\t\t\t}\n\t\t}\n\t\tif (arguments.length > 1) {\n\t\t\t// support multiple arguments as an array\n\t\t\treturn new Transform(arguments[0], argsToArray, arguments, true).as(VArray)\n\t\t}\n\t\tif (typeof array === 'object') {\n\t\t\t// allow an object as a hash to be mapped\n\t\t\tvar keyMapping = []\n\t\t\tvar valueArray = []\n\t\t\tfor (var key in array) {\n\t\t\t\tkeyMapping.push(key)\n\t\t\t\tvalueArray.push(array[key])\n\t\t\t}\n\t\t\treturn new Variable(function(results) {\n\t\t\t\tvar resultObject = {}\n\t\t\t\tfor (var i = 0; i < results.length; i++) {\n\t\t\t\t\tresultObject[keyMapping[i]] = results[i]\n\t\t\t\t}\n\t\t\t\treturn resultObject\n\t\t\t}).apply(null, valueArray)\n\t\t}\n\t\tthrow new TypeError('Variable.all requires an array')\n\t}\n\n\tfunction hasOwn(Target, createForInstance) {\n\n\t\tvar ownedClasses = this.ownedClasses || (this.ownedClasses = new lang.WeakMap())\n\t\t// TODO: assign to super classes\n\t\tvar Class = this\n\t\townedClasses.set(Target, createForInstance || function() { return new Target() })\n\t\treturn this\n\t}\n\tfunction generalizeClass() {\n\t\tvar prototype = this.prototype\n\t\tvar prototypeNames = Object.getOwnPropertyNames(prototype)\n\t\tfor(var i = 0, l = prototypeNames.length; i < l; i++) {\n\t\t\tvar name = prototypeNames[i]\n\t\t\tObject.defineProperty(this, name, getGeneralizedDescriptor(Object.getOwnPropertyDescriptor(prototype, name), name, this))\n\t\t}\n\t}\n\tfunction getGeneralizedDescriptor(descriptor, name, Class) {\n\t\tif (typeof descriptor.value === 'function') {\n\t\t\treturn {\n\t\t\t\tvalue: generalizeMethod(Class, name)\n\t\t\t}\n\t\t} else {\n\t\t\treturn descriptor\n\t\t}\n\t}\n\tfunction generalizeMethod(Class, name) {\n\t\t// I think we can just rely on `this`, but we could use the argument:\n\t\t// function(possibleEvent) {\n\t\t// \tvar target = possibleEvent && possibleEvent.target\n\t\tvar method = Class[name] = function() {\n\t\t\tvar instance = Class.for(this)\n\t\t\treturn instance[name].apply(instance, arguments)\n\t\t}\n\t\tmethod.for = function(context) {\n\t\t\tvar instance = Class.for(context)\n\t\t\treturn function() {\n\t\t\t\treturn instance[name].apply(instance, arguments)\n\t\t\t}\n\t\t}\n\t\treturn method\n\t}\n\tfunction delayUpdate(variable, promise) {\n\t\tvar originalUpdated = variable.updated\n\t\tvariable.updated = function() {\n\t\t\tvar event = originalUpdated.apply(this, arguments)\n\t\t\tevent.visited.enqueueUpdate = function(update) {\n\t\t\t\tpromise.then(update)\n\t\t\t}\n\t\t}\n\t}\n\n\tvar defaultContext = {\n\t\tname: 'Default context',\n\t\tdescription: 'This object is the default context for classes, corresponding to a singleton instance of that class',\n\t\tconstructor: {\n\t\t\tgetForClass: function(subject, Class) {\n\t\t\t\treturn Class.defaultInstance\n\t\t\t}\n\t\t},\n\t\tcontains: function() {\n\t\t\treturn true // contains everything\n\t\t}\n\t}\n\tfunction instanceForContext(Class, context) {\n\t\tif (!context) {\n\t\t\treturn Class.defaultInstance\n\t\t}\n\t\tvar instance = context.specify(Class)\n\t\tif (!context.instanceMap) {\n\t\t\tcontext.instanceMap = new Map()\n\t\t}\n\t\tcontext.instanceMap.set(Class, instance)\n\t\treturn instance\n//\t\tvar instance = context.subject.constructor.getForClass && context.subject.constructor.getForClass(context.subject, Class) || Class.defaultInstance\n//\t\tcontext.distinctSubject = mergeSubject(context.distinctSubject, instance.subject)\n//\t\treturn instance\n\t}\n\tVariable.valueOf = function(allowPromise) {\n\t\t// contextualized valueOf\n\t\treturn instanceForContext(this, context).valueOf(allowPromise)\n\t}\n\tVariable.then = function(callback, errback) {\n\t\t// contextualized valueOf\n\t\treturn instanceForContext(this, context).then(callback, errback)\n\t}\n\tVariable.getValue = function(forChild) {\n\t\t// contextualized getValue\n\t\treturn instanceForContext(this, context).getValue(forChild)\n\t}\n\tVariable.put = function(value) {\n\t\t// contextualized setValue\n\t\treturn instanceForContext(this, context).put(value)\n\t}\n\tVariable.for = function(subject) {\n\t\tif (subject != null) {\n\t\t\tif (typeof subject == 'object') {\n\t\t\t\tif (subject.target && !subject.constructor.getForClass) {\n\t\t\t\t\t// makes HTML events work\n\t\t\t\t\tsubject = subject.target\n\t\t\t\t}\n\t\t\t\tvar instance\n\t\t\t\tinstance = new Context(subject).specify(this)\n\t\t\t\tif (instance && !instance.subject) {\n\t\t\t\t\tinstance.subject = subject\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn this.collection.for(subject)\n\t\t\t}\n\t\t\t// TODO: Do we have a global context that we set on defaultInstance?\n\t\t\treturn instance || this.defaultInstance\n\t\t} else {\n\t\t\treturn this.defaultInstance\n\t\t}\n\t}\n\tVariable.from = function(value) {\n\t\tif (value && typeof value === 'object') {\n\t\t\t// a plain object, we use our own map to retrieve the instance (or create one)\n\t\t\tvar instanceMap = this.instanceMap || (this.instanceMap = new lang.WeakMap())\n\t\t\tvar instance = instanceMap.get(value)\n\t\t\tif (!instance) {\n\t\t\t\tinstanceMap.set(value, instance = new this(value))\n\t\t\t}\n\t\t\treturn instance\n\t\t} else {\n\t\t\t// a primitive, just unconditionally create a new variable for it\n\t\t\treturn new this(value)\n\t\t}\n\t}\n\tVariable.notifies = function(target) {\n\t\tvar instance = instanceForContext(this, context)\n\t\tinstance.notifies(target)\n\t\treturn instance\n\t}\n\tVariable.stopNotifies = function(target) {\n\t\tthis.defaultInstance.stopNotifies(target)\n\t}\n\tVariable.getCollectionOf = function () {\n\t\treturn this.collectionOf\n\t}\n\tVariable.updated = function(updateEvent, by) {\n\t\treturn instanceForContext(this, context).updated(updateEvent, by)\n\t}\n\tVariable._Transform = ContextualTransform;\n\n\t// delegate to the variable's collection\n\t['add', 'delete', 'clear', 'filter', 'map', 'forEach', 'slice', 'push', 'splice', 'pop', 'shift', 'unshift'].forEach(function(name) {\n\t\tVariable[name] = function() {\n\t\t\treturn this.collection[name].apply(this.collection, arguments)\n\t\t}\n\t\t// preserve array functionality on static methods of VArray\n\t\tVArray[name] = VArray.prototype[name]\n\t})\n\t// create a new variable with a default value\n\tVariable.default = function(value) {\n\t\treturn Variable.with({default: value})\n\t}\n\n\tvar proxyHandler = {\n\t\tget: function(target, name) {\n\t\t\tvar value = target[name]\n\t\t\treturn value === undefined ? target.property(name) : value\n\t\t},\n\t\tset: function(target, name, value) {\n\t\t\tvar oldValue = target[name]\n\t\t\tif (oldValue && oldValue.put) {\n\t\t\t\t// own property available to put into\n\t\t\t\toldValue.put(value)\n\t\t\t} else {\n\t\t\t\ttarget.set(name, value)\n\t\t\t}\n\t\t\treturn true\n\t\t},\n\t\thas: function(target, name) {\n\t\t\treturn (name in target) || (name in target.valueOf())\n\t\t},\n\t\tdeleteProperty: function(target, name) {\n\t\t\treturn proxyHandler.set(target, name, undefined)\n\t\t},\n\t\townKeys: function(target) {\n\t\t\treturn Object.getOwnPropertyNames(target.valueOf())\n\t\t}\n\t}\n\tVariable.proxy = function(source) {\n\t\t// should we memoize?\n\t\treturn new Proxy(source instanceof this ? source : this.from(source), proxyHandler)\n\t}\n\tObject.defineProperty(Variable, 'collectionOf', {\n\t\tget: function() {\n\t\t\treturn this._collectionOf\n\t\t},\n\t\tset: function(ItemClass) {\n\t\t\tif (this._collectionOf != ItemClass) {\n\t\t\t\tthis._collectionOf = ItemClass\n\t\t\t\tItemClass.collection = this\n\t\t\t}\n\t\t}\n\t})\n\tObject.defineProperty(Variable, 'collection', {\n\t\tget: function() {\n\t\t\tif (this.hasOwnProperty('_collection')) {\n\t\t\t\treturn this._collection\n\t\t\t}\n\t\t\tthis.collection = new VCollection()\n\t\t\tthis.collection.fixed = true // by default a model collection does not need to replace the array each time it is changed\n\t\t\treturn this.collection\n\t\t},\n\t\tset: function(Collection) {\n\t\t\tif (!this.hasOwnProperty('_collection') || this._collection != Collection) {\n\t\t\t\tthis._collection = Collection\n\t\t\t\tCollection.collectionOf = this\n\t\t\t}\n\t\t}\n\t})\n\tVariable.generalize = generalizeClass\n\tVariable.call = Function.prototype.call // restore these\n\tVariable.apply = Function.prototype.apply\n\n\tfunction VFunction() {\n\t}\n\t(VFunction.returns = function(Type){\n\t\tfunction VFunction() {}\n\t\tVFunction.defineAs = function(method)\t{\n\t\t\treturn {\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = arguments\n\t\t\t\t\t// TODO: make these args part of the call so variables can be resolved\n\t\t\t\t\t// TODO: may actually want to do getValue().invoke()\n\t\t\t\t\treturn new Type(new Transform(this, function(value) {\n\t\t\t\t\t\t\treturn value == null ? undefined : value[method].apply(value, args)\n\t\t\t\t\t}))\n\t\t\t\t},\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t}\n\t\t}\n\t\treturn VFunction\n\t})\n\n\tfunction VMethod() {\n\t}\n\tVMethod.defineAs = function(method) {\n\t\treturn {\n\t\t\tvalue: function() {\n\t\t\t\tvar args = arguments\n\t\t\t\t// TODO: make these args part of the call so variables can be resolved\n\t\t\t\t// TODO: may actually want to do getValue().invoke()\n\t\t\t\tvar variable = this\n\t\t\t\treturn when(this.valueOf(), function(value) {\n\t\t\t\t\tif (!value || !value[method]) {\n\t\t\t\t\t\tvalue = new variable.constructor.wrapsType(value)\n\t\t\t\t\t}\n\t\t\t\t\tvar returnValue = value[method].apply(value, args)\n\t\t\t\t\treturn when(variable.put(value), function() {\n\t\t\t\t\t\treturn returnValue\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t},\n\t\t\twritable: true,\n\t\t\tconfigurable: true\n\t\t}\n\t}\n\n\tfunction VString(value) {\n\t\treturn makeSubVar(this, (typeof value === 'object' || value === undefined) ? value : String(value), VString)\n\t}\n\n\tfunction VNumber(value) {\n\t\treturn makeSubVar(this, (typeof value === 'object' || value === undefined) ? value : Number(value), VNumber)\n\t}\n\n\tVString = Variable.with({\n\t\tcharAt: VFunction.returns(VString),\n\t\tcodeCharAt: VFunction.returns(VNumber),\n\t\tindexOf: VFunction.returns(VNumber),\n\t\tlastIndexOf: VFunction.returns(VNumber),\n\t\tmatch: VFunction.returns(VArray),\n\t\treplace: VFunction.returns(VString),\n\t\tsubstr: VFunction.returns(VString),\n\t\tslice: VFunction.returns(VString),\n\t\ttoUpperCase: VFunction.returns(VString),\n\t\ttoLowerCase: VFunction.returns(VString),\n\t\treplace: VFunction.returns(VString),\n\t\ttoString: function() {\n\t\t\treturn this.valueOf() || '' // if it is null or undefined, return blank string\n\t\t}\n\t\t//length: VNumber\n\t}, VString)\n\tVString.prototype.type = 'string'\n\tVString.isPrimitive = true\n\n\tVNumber = Variable.with({\n\t\ttoFixed: VFunction.returns(VString),\n\t\ttoExponential: VFunction.returns(VString),\n\t\ttoPrecision: VFunction.returns(VString),\n\t\ttoLocaleString: VFunction.returns(VString)\n\t}, VNumber)\n\tVNumber.prototype.type = 'number'\n\tVNumber.isPrimitive = true\n\n\tfunction VBoolean(value) {\n\t\treturn makeSubVar(this, typeof value === 'object' ? value : Boolean(value), VBoolean)\n\t}\n\tVBoolean = Variable.with({}, VBoolean)\n\tVBoolean.prototype.type = 'boolean'\n\tVBoolean.isPrimitive = true\n\n\tfunction VSet(value) {\n\t\treturn makeSubVar(this, value instanceof Array ? new lang.Set(value) : value, VSet)\n\t}\n\tVSet = Variable.with({\n\t\thas: function(value) {\n\t\t\treturn this.to(function(set) {\n\t\t\t\tif (set && set.has) { // ideally\n\t\t\t\t\treturn set.has(value)\n\t\t\t\t}\n\t\t\t\tif (set && set.indexOf) { // also handle arrays\n\t\t\t\t\treturn set.indexOf(value) > -1\n\t\t\t\t}\n\t\t\t\treturn false\n\t\t\t}).as(VBoolean)\n\t\t},\n\t\tadd: VMethod,\n\t\tclear: VMethod,\n\t\tdelete: VMethod\n\t}, VSet)\n\tObject.defineProperty(VSet.prototype, 'array', {\n\t\tget: function() {\n\t\t\treturn this._array || (this._array = this.to(setToArray).as(VArray))\n\t\t}\n\t})\n\tVSet.wrapsType = lang.Set\n\n\tvar VCollection = lang.compose(VArray, function VCollection(value) {\n\t\treturn makeSubVar(this, value, VCollection)\n\t}, {\n\t\tvalueOf: function(mode) {\n\t\t\t// skip past VArray valueOf, since it is redundant\n\t\t\tvar parentContext = context\n\t\t\tvar sourceContext = context = context ? context.newContext() : new Context()\n\t\t\tvar value = Variable.prototype.valueOf.call(this, mode)\n\t\t\tsourceContext.setVersion(this.version)\n\t\t\tvar varray = this\n\t\t\ttry {\n\t\t\t\treturn when(value, function(array) {\n\t\t\t\t\tif (!mode || !mode.getTyped) {\n\t\t\t\t\t\treturn array\n\t\t\t\t\t}\n\t\t\t\t\tif (!array) {\n\t\t\t\t\t\treturn []\n\t\t\t\t\t}\n\t\t\t\t\tvar collectionOf = varray.getCollectionOf()\n\n\t\t\t\t\tif (collectionOf && (!varray._typedArray || !(varray._typedVersion >= sourceContext.version))) {\n\t\t\t\t\t\t// TODO: eventually we may want to do this even more lazily for slice operations\n\t\t\t\t\t\tvarray._typedArray = array.map(function(item, index) {\n\t\t\t\t\t\t\tif (!(item instanceof collectionOf)) {\n\t\t\t\t\t\t\t\titem = collectionOf === Variable ? exports.reactive(item) : collectionOf.from(item)\n\t\t\t\t\t\t\t\tif (!item.parent) {\n\t\t\t\t\t\t\t\t\t// set the parent; we may eventually put a check in place here to make sure we aren't\n\t\t\t\t\t\t\t\t\t// reparenting, but this could legimately be a different parent if the array originates\n\t\t\t\t\t\t\t\t\t// from another \"source\" variable that drives this.\n\t\t\t\t\t\t\t\t\titem.parent = varray\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (varray.isWritable) {\n\t\t\t\t\t\t\t\t\titem.key = index\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn item\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// items were converted, store the original array\n\t\t\t\t\t\tvarray._typedVersion = sourceContext.version\n\t\t\t\t\t}\n\t\t\t\t\tarray = varray._typedArray || mode.allowUntyped && array\n\t\t\t\t\tif (varray.sortFunction && varray._sortedArray != array) {\n\t\t\t\t\t\t// we have a sort function, and a new incoming array, need to resort\n\t\t\t\t\t\tvar reversed = varray.reversed\n\t\t\t\t\t\tvar sortFunction = varray.sortFunction\n\t\t\t\t\t\tvarray.sortFunction = null // null this so we don't reenter here\n\t\t\t\t\t\tarray = varray.sort(sortFunction)\n\t\t\t\t\t\tif (reversed) {\n\t\t\t\t\t\t\tvarray.reversed()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn array\n\t\t\t\t})\n\t\t\t} finally {\n\t\t\t\tif (parentContext) {\n\t\t\t\t\tparentContext.setVersion(sourceContext.version)\n\t\t\t\t}\n\t\t\t\tcontext = parentContext\n\t\t\t}\n\t\t},\n\t\tproperty: function(key, PropertyClass) {\n\t\t\tif (this._typedArray) {\n\t\t\t\tvar entry = this._typedArray[key]\n\t\t\t\tentry.key = key\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\treturn Variable.prototype.property.call(this, key, PropertyClass || typeof key === 'number' && this.collectionOf)\n\t\t},\n\t\tindexOf: function(idOrValue) {\n\t\t\tvar array = this.valueOf() || []\n\t\t\tvar collectionOf = this.collectionOf\n\t\t\tif (collectionOf.prototype.getId) {\n\t\t\t\tvar id = idOrValue && idOrValue.getId ? idOrValue.getId() : idOrValue\n\t\t\t\tfor (var i = 0, l = array.length; i < l; i++) {\n\t\t\t\t\tif (array[i].getId() == id) {\n\t\t\t\t\t\treturn i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn -1\n\t\t\t} else {\n\t\t\t\treturn array.indexOf(idOrValue && idOrValue.valueOf())\n\t\t\t}\n\t\t}\n\t})\n\n\tfunction VDate(value) {\n\t\treturn makeSubVar(this, typeof value === 'object' ? value : new Date(value), VDate)\n\t}\n\tVDate = Variable.with({\n\t\ttoDateString: VFunction.returns(VString),\n\t\ttoTimeString: VFunction.returns(VString),\n\t\ttoGMTString: VFunction.returns(VString),\n\t\ttoUTCString: VFunction.returns(VString),\n\t\tgetTime: VFunction.returns(VNumber),\n\t\tsetTime: VMethod\n\t}, VDate)\n\n\tVDate.wrapsType = Date\n\n\tvar VPromise = lang.compose(Variable, function VPromise(value) {\n\t\treturn makeSubVar(this, value, VPromise)\n\t}, {\n\t\tvalueOf: function() {\n\t\t\treturn this.then()\n\t\t},\n\t})\n\n\tvar exports = {\n\t\t__esModule: true,\n\t\tVariable: Variable,\n\t\tVArray: VArray,\n\t\tdefault: Variable,\n\t\tVString: VString,\n\t\tVNumber: VNumber,\n\t\tVBoolean: VBoolean,\n\t\tVPromise: VPromise,\n\t\tVDate: VDate,\n\t\tVSet: VSet,\n\t\tVMap: VMap,\n\t\tGeneratorVariable: GeneratorVariable,\n\t\tTransform: Transform,\n\t\tdeny: deny,\n\t\tnoChange: noChange,\n\t\tContext: Context,\n\t\tItem: Item,\n\t\tNotifyingContext: NotifyingContext,\n\t\tall: all,\n\t\treact: react,\n\t\tdelayUpdate: delayUpdate,\n\t\tobjectUpdated: objectUpdated,\n\t\tNOT_MODIFIED: NOT_MODIFIED,\n\t\t_changeValue: changeValue,\n\t\tgetNextVersion: getNextVersion,\n\t\tReplacedEvent: ReplacedEvent,\n\t\tAddedEvent: AddedEvent,\n\t\tDeletedEvent: DeletedEvent,\n\t\tUpdateEvent: UpdateEvent,\n\t}\n\tObject.defineProperty(exports, 'currentContext', {\n\t\tget: function() {\n\t\t\treturn context\n\t\t},\n\t\tset: function(currentContext) {\n\t\t\tcontext = currentContext\n\t\t}\n\t})\n\n\tfunction getNextVersion() {\n\t\tvar dateBasedVersion = (Date.now() - 1500000000000) * 256\n\t\tif (dateBasedVersion > nextVersion) {\n\t\t\tnextVersion = dateBasedVersion\n\t\t}\n\t\treturn nextVersion++\n\t}\n\n\tvar IterativeMethod = lang.compose(Transform, function(source, method) {\n\t}, {\n\t\ttransform: function() {\n\t\t\tvar array = this.source.valueOf(GET_TYPED_OR_UNTYPED_ARRAY)\n\t\t\tvar method = this.method\n\t\t\tif (typeof method === 'string') {\n\t\t\t\t// apply method\n\t\t\t\treturn this.hasOwnProperty('source2') ?\n\t\t\t\t\t[][method].call(array, this.source1.valueOf(), this.source2) :\n\t\t\t\t\t[][method].call(array, this.source1.valueOf())\n\t\t\t} else {\n\t\t\t\treturn method(array, [this.source1.valueOf(), this.source2])\n\t\t\t}\n\t\t},\n\t\t_mappedItems: function(array) {\n\t\t\tvar source = this.source\n\t\t\tvar collectionOf = source && source.collectionOf\n\t\t\treturn collectionOf ? array.map(function(item, i) {\n\t\t\t\tvar wrapped = collectionOf.from(item)\n\t\t\t\twrapped.collection = source\n\t\t\t\treturn wrapped\n\t\t\t}) : array\n\t\t},\n\t\tslice: function(start, end) {\n\t\t\treturn when(this.valueOf(true), function(array) {\n\t\t\t\treturn array.slice(start, end)\n\t\t\t})\n\t\t},\n\n\t\tgetCollectionOf: function(){\n\t\t\treturn this.source.getCollectionOf()\n\t\t}\n\t})\n\n\tfunction defineIterativeFunction(method, constructor, properties, returns, definedOn) {\n\t\tvar IterativeResults = lang.compose(returns ? returns.as(IterativeMethod) : IterativeMethod, constructor, properties)\n\t\tIterativeResults.prototype.method || (IterativeResults.prototype.method = method)\n\t\tObject.defineProperty(IterativeResults.prototype, 'isIterable', {value: true});\n\t\tdefinedOn = definedOn || VArray;\n\t\tdefinedOn[method] = definedOn.prototype[method] = function(iteratee, arg2) {\n\t\t\tvar results = new IterativeResults(this)\n\t\t\tresults.source = this\n\t\t\tresults.source1 = iteratee\n\t\t\tif (arg2) {\n\t\t\t\tresults.source2 = arg2\n\t\t\t}\n\t\t\treturn results\n\t\t}\n\t}\n\n\tdefineIterativeFunction('filter', function Filtered(source) {\n\t}, {\n\t\tupdated: function(event, by, isDownstream) {\n\t\t\tif (!event || event.modifier === this || (event.modifier && event.modifier.constructor === this)) {\n\t\t\t\treturn Transform.prototype.updated.call(this, event, by)\n\t\t\t}\n\t\t\tvar contextualizedVariable = context && context.getContextualized(this) || this\n\t\t\tvar filterFunction = this.source1.valueOf()\n\t\t\tif (event.type === 'spliced') { // if we don't have unique items in the array, we can't match indices\n\t\t\t\tvar toAdd = []\n\t\t\t\tvar newItems = event.items\n\t\t\t\tfor (var i = 0; i < newItems.length; i++) {\n\t\t\t\t\t// filter, preserving the original untyped value\n\t\t\t\t\tif (filterFunction.call(newItems, newItems[i], i)) {\n\t\t\t\t\t\tif (newItems.untypedItems) {\n\t\t\t\t\t\t\ttoAdd.push(newItems.untypedItems[i])\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttoAdd.push(newItems[i])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar toRemove = event.removed.filter(filterFunction)\n\t\t\t\tvar start, deleteCount\n\t\t\t\tif (toRemove.length > 1) {\n\t\t\t\t\t// bail and consider it a full refresh\n\t\t\t\t\treturn Transform.prototype.updated.call(this, new ReplacedEvent(event))\n\t\t\t\t} else if (toRemove.length == 1) {\n\t\t\t\t\t// removing one\n\t\t\t\t\tif (!toRemove[0].parent) {\n\t\t\t\t\t\t// if we are not dealing with unique variables, we bail\n\t\t\t\t\t\treturn Transform.prototype.updated.call(this, new ReplacedEvent(event))\n\t\t\t\t\t}\n\t\t\t\t\tstart = contextualizedVariable.cachedValue.indexOf(toRemove[0])\n\t\t\t\t\tdeleteCount = 1\n\t\t\t\t} else {\n\t\t\t\t\tstart = event.atEnd ? contextualizedVariable.cachedValue.length : 0\n\t\t\t\t\tdeleteCount = 0\n\t\t\t\t}\n\t\t\t\tarrayToModify(contextualizedVariable, function(array, doSplice) {\n\t\t\t\t\tdoSplice(start, deleteCount, toAdd)\n\t\t\t\t})\n\t\t\t} else if (event.type === 'entry') {\n\t\t\t\tvar object = event.value\n\t\t\t\tvar index = contextualizedVariable.cachedValue.indexOf(object)\n\t\t\t\tvar matches = [object].filter(filterFunction).length > 0\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tif (matches) {\n\t\t\t\t\t\treturn Variable.prototype.updated.call(this, event, by, isDownstream)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarrayToModify(contextualizedVariable, function(array, doSplice) {\n\t\t\t\t\t\t\tdoSplice(index, 1, [])\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\telse {\n\t\t\t\t\tif (matches) {\n\t\t\t\t\t\tarrayToModify(contextualizedVariable, function(array, doSplice) {\n\t\t\t\t\t\t\tdoSplice(array.length, 0, [object])\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\t// else nothing matches\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t} else {\n\t\t\t\treturn Transform.prototype.updated.call(this, event, by, isDownstream)\n\t\t\t}\n\t\t},\n\t\ttransform: function() {\n\t\t\tvar array = this.source.valueOf(GET_TYPED_OR_UNTYPED_ARRAY)\n\t\t\tvar source = this.source\n\t\t\tvar results = []\n\t\t\tvar callback = this.source1.valueOf()\n\t\t\treturn when(array, function(array) {\n\t\t\t\tvar untypedArray = source.valueOf() // wait until the variable is resolved to resolve this\n\t\t\t\tarray.forEach(function(value, index) {\n\t\t\t\t\tif (callback(value, index)) {\n\t\t\t\t\t\t// push the original values, so we preserve underlying and typed values\n\t\t\t\t\t\tresults.push(untypedArray[index])\n\t\t\t\t\t}\n\t\t\t\t}, this.source2)\n\t\t\t\treturn results\n\t\t\t})\n\t\t},\n\t\t// just delegate directly to the source for these methods\n\t\tpush: function(value) {\n\t\t\treturn this.source.push.apply(this.source, arguments)\n\t\t},\n\t\tunshift: function(value) {\n\t\t\treturn this.source.unshift.apply(this.source, arguments)\n\t\t},\n\t\t// these rely on data from this array to compute the additions/removals to the source\n\t\tpop: function(value) {\n\t\t\treturn when(this.valueOf(), function(array) {\n\t\t\t\treturn array.length && this.source.remove(array[array.length - 1])\n\t\t\t})\n\t\t},\n\t\tshift: function(value) {\n\t\t\treturn when(this.valueOf(), function(array) {\n\t\t\t\treturn array.length && this.source.remove(array[0])\n\t\t\t})\n\t\t},\n\t\tsplice: function(value) {\n\t\t\tthrow new Error('Not supported yet')\n\t\t},\n\t\tgetCollectionOf: function() {\n\t\t\treturn this.source.getCollectionOf()\n\t\t}\n\t}, VCollection)\n\tdefineIterativeFunction('map', function Mapped(source) {\n\t}, {\n\t\tupdated: function(event, by, isDownstream) {\n\t\t\tif (!event || event.modifier === this || (event.modifier && event.modifier.constructor === this)) {\n\t\t\t\treturn Variable.prototype.updated.call(this, event, by)\n\t\t\t}\n\t\t\tvar contextualizedVariable = context && context.getContextualized(this) || this\n\t\t\tif (event.type === 'spliced') {\n\t\t\t\tthis.splice.apply(this, [event.start, event.deleteCount].concat(event.items.map(this.source1.valueOf())))\n\t\t\t} else if (event.type === 'property') {\n\t\t\t\tif (this.getCollectionOf()) {\n\t\t\t\t\treturn // if it has typed items, we don't need to propagate update events, since they will be handled by the variable item.\n\t\t\t\t}\n\t\t\t\tvar object = event.parent.valueOf()\n\t\t\t\tvar array = contextualizedVariable.cachedValue\n\t\t\t\tvar index = event.key\n\t\t\t\tvar value = event.value\n\t\t\t\tif (index > -1) {\n\t\t\t\t\t// update was to an index property of this array variable\n\t\t\t\t\tvalue = object[index]\n\t\t\t\t} else {\n\t\t\t\t\t// update was inside an object inside of our array\n\t\t\t\t\tindex = array && array.map && array.indexOf(object)\n\t\t\t\t}\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tcontextualizedVariable.splice(index, 1, this.source1.valueOf().call(this.source2, this.source.property(index)))\n\t\t\t\t} else {\n\t\t\t\t\treturn Transform.prototype.updated.call(this, event, by, isDownstream)\n\t\t\t\t}\n\t\t\t} else if (event.type === 'entry') {\n\t\t\t\tif (this.getCollectionOf()) {\n\t\t\t\t\treturn // if it has typed items, we don't need to propagate update events, since they will be handled by the variable item.\n\t\t\t\t}\n\t\t\t\t// TODO: find the element\n\t\t\t} else {\n\t\t\t\treturn Transform.prototype.updated.call(this, event, by, isDownstream)\n\t\t\t}\n\t\t}\n\t}, VArray)\n\tdefineIterativeFunction('reduce', function Reduced() {})\n\tdefineIterativeFunction('reduceRight', function Reduced() {})\n\tdefineIterativeFunction('some', function Aggregated() {}, {}, VBoolean)\n\tdefineIterativeFunction('every', function Aggregated() {}, {}, VBoolean)\n\tdefineIterativeFunction('join', function Aggregated() {}, {}, VString)\n\tdefineIterativeFunction('keyBy', function UniqueIndex(source, args) {}, {\n\t\tproperty: VMap.prototype.property,\n\t\tmethod: function(array, args) {\n\t\t\tvar index = new Map()\n\t\t\tvar keyGenerator = args[0]\n\t\t\tvar valueGenerator = args[1]\n\t\t\tvar hasKeyFunction = typeof keyGenerator === 'function'\n\t\t\tvar hasValueFunction = typeof valueGenerator === 'function'\n\t\t\tvar hasKey = !!keyGenerator\n\t\t\tfor (var i = 0, l = array.length; i < l; i++) {\n\t\t\t\tvar element = array[i]\n\t\t\t\tindex.set(\n\t\t\t\t\thasKeyFunction ? keyGenerator(element, emit) :\n\t\t\t\t\t\thasKey ? element[keyGenerator] : element,\n\t\t\t\t\thasValueFunction ? valueGenerator(element) : element)\n\t\t\t}\n\t\t\tfunction emit(key, value) {\n\t\t\t\tindex.set(key, value)\n\t\t\t}\n\t\t\treturn index\n\t\t}\n\t})\n\n\tdefineIterativeFunction('groupBy', function UniqueIndex(source, args) {}, {\n\t\tproperty: VMap.prototype.property,\n\t\tmethod: function(array, args) {\n\t\t\tvar index = new Map()\n\t\t\tvar keyGenerator = args[0]\n\t\t\tvar valueGenerator = args[1]\n\t\t\tvar hasKeyFunction = typeof keyGenerator === 'function'\n\t\t\tvar hasValueFunction = typeof valueGenerator === 'function'\n\t\t\tvar hasKey = !!keyGenerator\n\t\t\tfor (var i = 0, l = array.length; i < l; i++) {\n\t\t\t\tvar element = array[i]\n\t\t\t\tvar key = hasKeyFunction ? keyGenerator(element) :\n\t\t\t\t\t\thasKey ? element[keyGenerator] : element\n\t\t\t\tvar group = index.get(key)\n\t\t\t\tif (!group) {\n\t\t\t\t\tindex.set(key, group = [])\n\t\t\t\t}\n\t\t\t\tgroup.push(hasValueFunction ? valueGenerator(element) : element)\n\t\t\t}\n\t\t\tfunction emit(key, value) {\n\t\t\t\tvar group = index.get(key)\n\t\t\t\tif (!group) {\n\t\t\t\t\tindex.set(key, group = [])\n\t\t\t\t}\n\t\t\t\tgroup.push(value)\n\t\t\t}\n\t\t\treturn index\n\t\t}\n\t})\n\n\tvar getGeneratorDescriptor = Variable.getGeneratorDescriptor = function(value) {\n\t\tvar variables\n\t\treturn {\n\t\t\tget: function() {\n\t\t\t\tif (!variables) {\n\t\t\t\t\t variables = new lang.WeakMap()\n\t\t\t\t}\n\t\t\t\tvar variable = variables.get(this)\n\t\t\t\tif (!variable) {\n\t\t\t\t\tvariables.set(this, variable = new GeneratorVariable(value.bind(this)))\n\t\t\t\t}\n\t\t\t\treturn variable\n\t\t\t},\n\t\t\tenumerable: true\n\t\t}\n\t}\n\n\tfunction react(generator, options) {\n\t\tif (typeof generator !== 'function') {\n\t\t\tthrow new Error('react() must be called with a generator.')\n\t\t}\n\t\tif (options && options.reverse) {\n\t\t\tgenerator.reverse = options.reverse\n\t\t}\n\t\treturn new GeneratorVariable(generator)\n\t}\n\n\tVariable.all = all\n\tVariable.Context = Context\n\n\tvar g = typeof global != 'undefined' ? global : window;\n\t(g.devtoolsFormatters || (g.devtoolsFormatters = [])).push({\n\t\theader: function(variable, config) {\n\t\t\tif (variable && variable instanceof Variable) {\n\t\t\t\tvar copy = Object.assign({}, variable)\n\t\t\t\tcopy[Symbol.toStringTag] = variable.constructor.name\n\t\t\t\tvar variableTime = variable.version / 256 + 1500000000000\n\t\t\t\treturn ['span', {}, '',\n\t\t\t\t\t(variable.readyState === 'invalidated' ? ' invalidated ' :\n\t\t\t\t\t\ttypeof variable.valueOf() === 'object' ? ['object', { object: variable.valueOf() }] : ['span', {}, ' = ' + variable]),\n\t\t\t\t\t['object', { object: copy }],\n\t\t\t\t\t['span', {}, ' (' +\n\t\t\t\t\t(variable.version ? new Date(variableTime)[Date.now() - variableTime > 30000000 ? 'toLocaleString' : 'toLocaleTimeString']() : '') +\n\t\t\t\t\t(variable.listeners ? ' live)' : ')')]]\n\t\t\t}\n\t\t\treturn null // ignore all other objects\n\t\t},\n\t\thasBody: function(request) {\n\t\t\treturn false // default\n\t\t},\n\t\tbody: function(variable) {\n\t\t\tvar variableTime = variable.version / 256 + 1500000000000\n\t\t\tvar properties = ['div', {}, ['div', {}, 'version: ' + (variableTime && new Date(variableTime).toLocaleString())],\n\t\t\t\t['div', {}, 'readyState: ' + variable.readyState]]\n\t\t\tif (variable.valueOf())\n\t\t\t\tproperties.push(['div', {}, ['object', { object: variable.valueOf() }], '(value)'])\n\t\t\tif (variable.listeners) {\n\t\t\t\tproperties.push(['div', {}, ['object', { object: variable.listeners }], '(listeners)'])\n\t\t\t}\n\t\t\tvar source, i = 0\n\t\t\twhile (source = variable['source' + (i || '')]) {\n\t\t\t\tproperties.push(['div', {}, ['object', { object: variable['source' + (i || '')] }], ['div', { float: 'left' }, '(source ' + i + ')']])\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn properties\n\t\t}\n\t})\n\n\treturn exports\n}))\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","(function (root, factory) { if (typeof define === 'function' && define.amd) {\n\tdefine(['./util/lang', './Variable'], factory) } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('./util/lang'), require('./Variable')) // Node\n}}(this, function (lang, VariableExports) {\n\tvar doc = typeof document !== 'undefined' && document\n\tvar invalidatedElements\n\tvar queued\n\tvar toRender = []\n\tvar nextId = 1\n\tvar requestAnimationFrame = lang.requestAnimationFrame\n\tvar Context = VariableExports.Context\n\n\tfunction Renderer(options) {\n\t\tvar variable = options.variable\n\n\t\tthis.variable = variable\n\t\tif (options.selector) {\n\t\t\tthis.selector = options.selector\n\t\t}\n\t\tif (options.getElements) {\n\t\t\tthis.getElements = options.getElements\n\t\t}\n\t\telse if (options.element) {\n\t\t\tvar element = this.element = options.element;\n\t\t\t(element.alkaliRenderers || (element.alkaliRenderers = [])).push(this)\n\t\t} else {\n\t\t\tthrow new Error('No element provided to Renderer')\n\t\t}\n\t\tif (options.update) {\n\t\t\tthis.updateRendering = options.update\n\t\t}\n\t\tif (options.shouldRender) {\n\t\t\tthis.shouldRender = options.shouldRender\n\t\t}\n\t\tif (options.renderUpdate) {\n\t\t\tthis.renderUpdate = options.renderUpdate\n\t\t}\n\t\tif (options.alwaysUpdate) {\n\t\t\tthis.alwaysUpdate = options.alwaysUpdate\n\t\t}\n\t\tif (options.updateOnStart === false){\n\t\t\tvar contextualized = this.contextualized || this.variable\n\t\t\tthis.variable.valueOf(this)\n\t\t\t// even if we don't render on start, we still need to compute the value so we can depend on the computed\n\t\t\t// TODO: we may need to handle recontextualization if it returns a promise\n\t\t\tcontextualized.notifies(this)\n\t\t} else if (element) {\n\t\t\tthis.updateRendering(true)\n\t\t} else {\n\t\t\t// bound to a class, just do notification\n\t\t\tthis.variable.notifies(this)\n\t\t}\n\t}\n\tRenderer.prototype = {\n\t\tconstructor: Renderer,\n\t\tversion: 0,\n\t\tnotifies: true,\n\t\tupdateRendering: function () {\n\t\t\tthrow new Error ('updateRendering must be implemented by sub class of Renderer')\n\t\t},\n\t\tupdated: function (updateEvent, by, context) {\n\t\t\tif (!this.invalidated) {\n\t\t\t\tif (this.getElements) {\n\t\t\t\t\tvar variable = this.variable\n\t\t\t\t\tvar invalidated = this.invalidated || (this.invalidated = new lang.Set())\n\t\t\t\t\tthis.getElements().forEach(function(element) {\n\t\t\t\t\t\tif (!updateEvent.doesAffect || updateEvent.doesAffect(element)){\n\t\t\t\t\t\t\tinvalidated.add(element)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/*if (element.constructor.getForClass(element, variable) == by) {\n\t\t\t\t\t\t\tinvalidated.add(element)\n\t\t\t\t\t\t}*/\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\t// do this only once, until we render again\n\t\t\t\t\tthis.invalidated = true\n\t\t\t\t}\n\t\t\t\tif (this.deferredRender) {\n\t\t\t\t\tthis.deferredRender.isCanceled = true\n\t\t\t\t\tthis.deferredRender = null\n\t\t\t\t}\n\t\t\t\tvar renderer = this;\n\t\t\t\t(updateEvent.visited.enqueueUpdate || requestAnimationFrame)(function() {\n\t\t\t\t\tif (renderer.invalidated === true) {\n\t\t\t\t\t\trenderer.updateRendering(renderer.alwaysUpdate, renderer.element)\n\t\t\t\t\t} else if (renderer.invalidated) {\n\t\t\t\t\t\trenderer.invalidated.forEach(function(element) {\n\t\t\t\t\t\t\trenderer.updateRendering(renderer.alwaysUpdate, element)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t\texecuteWithin: Context.prototype.executeWithin,\n\t\tsetVersion: function(){\n\t\t\t// this doesn't need its own version/hash\n\t\t},\n\t\tnewContext: function() {\n\t\t\treturn new Context(this.element, true)\n\t\t},\n\t\tgetContextualized: function(Variable) {\n\t\t\treturn Context.prototype.getContextualized.call(this, Variable)\n\t\t\t//return this.contextualized || this.variable\n\t\t},\n\t\tspecify: function(Variable) {\n\t\t\treturn this.contextualized = Context.prototype.specify.call(this, Variable)\n\t\t\t// a new context to get this\n\t\t\t//return this.contextualized = this.newContext(null, true).specify(Variable)\n\t\t},\n\t\tmerge: function(){\n\t\t\t// noop\n\t\t},\n\t\tcontextMatches: function(context) {\n\t\t\treturn true\n\t\t},\n\t\tinvalidateElement: function(element) {\n\t\t\tif(!invalidatedElements){\n\t\t\t\tinvalidatedElements = new WeakMap(null, 'invalidated')\n\t\t\t}\n\t\t\tvar invalidatedParts = invalidatedElements.get(element)\n\t\t\tinvalidatedElements.set(element, invalidatedParts = {})\n\t\t\tif (!invalidatedParts[id]) {\n\t\t\t\tinvalidatedParts[id] = true\n\t\t\t}\n\t\t\tif (!queued) {\n\t\t\t\tlang.queueTask(processQueue)\n\t\t\t\tqueued = true\n\t\t\t}\n\t\t\tvar renderer = this\n\t\t\ttoRender.push(function(){\n\t\t\t\trenderer.invalidated = false\n\t\t\t\trenderer.updateElement(element)\n\t\t\t})\n\t\t},\n\t\tgetId: function(){\n\t\t\treturn this.id || (this.id = nextId++)\n\t\t},\n\t\tstop: function() {\n\t\t\tvar contextualized = this.contextualized || this.variable\n\t\t\tcontextualized.stopNotifies(this)\n\t\t\tif (this.builtList) {\n\t\t\t\tthis.builtList = false\n\t\t\t\tthis.omitValueOf = false\n\t\t\t}\n\t\t},\n\t\trestart: function() {\n\t\t\tthis.updateRendering(true)\n\t\t},\n\t\tisSameProperty: function(renderer) {\n\t\t\treturn renderer.constructor === this.constructor && renderer.name === this.name\n\t\t}\n\t}\n\tObject.defineProperty(Renderer.prototype, 'subject', {\n\t\tget: function() {\n\t\t\treturn this.element\n\t\t}\n\t})\n\n\tfunction ElementRenderer(options) {\n\t\tRenderer.call(this, options)\n\t}\n\tElementRenderer.prototype = Object.create(Renderer.prototype)\n\tElementRenderer.prototype.shouldRender = function (element) {\n\t\treturn document.body.contains(element)\n\t}\n\tElementRenderer.prototype.getSubject = function () {\n\t\treturn this.element\n\t}\n\tElementRenderer.prototype.updateRendering = function (always, element) {\n\t\tif (!element && this.elements) {\n\t\t\tvar elements = this.elements\n\t\t\tif(!elements.length){\n\t\t\t\tif(this.selector){\n\t\t\t\t\telements = document.querySelectorAll(this.selector)\n\t\t\t\t}else{\n\t\t\t\t\tthrow new Error('No element or selector was provided to the Renderer')\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor(var i = 0, l = elements.length; i < l; i++){\n\t\t\t\tthis.updateRendering(always, elements[i])\n\t\t\t}\n\t\t} else {\n\t\t\tvar thisElement = element || this.element\n\n\t\t\tif(always || this.shouldRender(thisElement)){\n\t\t\t\t// it is connected\n\t\t\t\tthis.updateElement(thisElement)\n\t\t\t} else {\n\t\t\t\tvar id = this.getId()\n\t\t\t\tvar renderers = thisElement.renderersOnShow\n\t\t\t\tif(!renderers){\n\t\t\t\t\trenderers = thisElement.renderersOnShow = []\n\t\t\t\t\tthisElement.className += ' needs-rerendering'\n\t\t\t\t}\n\t\t\t\tif (!renderers[id]) {\n\t\t\t\t\trenderers[id] = this\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tElementRenderer.prototype.addElement = function (element) {\n\t\tif (this.selector) {\n\t\t\telement.renderersOnShow = [this]\n\t\t} else {\n\t\t\tthis.elements.push(element)\n\t\t}\n\t\t// and immediately do an update\n\t\tthis.updateElement(element)\n\t}\n\tElementRenderer.prototype.updateElement = function(element) {\n\t\tthis.invalidated = false\n\t\tif (this.omitValueOf) {\n\t\t\tthis.started = true\n\t\t\tthis.renderUpdate(undefined, element)\n\t\t\treturn\n\t\t}\n\t\tvar Element = element.constructor\n\t\tvar generalized = Element._generalized\n\t\tvar resolved\n\t\tvar renderer = element === this.element ? this : Object.create(this, { element: { value: element} })\n\t\tvar deferredRender\n\t\trenderer.executeWithin(function() {\n\t\t\tdeferredRender = renderer.variable.then(function(value) {\n\t\t\t\tresolved = true\n\t\t\t\tif (deferredRender) {\n\t\t\t\t\tif (deferredRender === renderer.deferredRender) {\n\t\t\t\t\t\trenderer.deferredRender = null\n\t\t\t\t\t}\n\t\t\t\t\tif (deferredRender.isCanceled) {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!renderer.invalidated) {\n\t\t\t\t\tif (renderer.contextualized && renderer.contextualized !== renderer.variable) {\n\t\t\t\t\t\trenderer.contextualized.stopNotifies(renderer)\n\t\t\t\t\t}\n\t\t\t\t\tif (generalized) {\n\t\t\t\t\t\tvar rendererIdentifier = renderer.toString()\n\t\t\t\t\t\tif (!generalized[rendererIdentifier]) {\n\t\t\t\t\t\t\tgeneralized[rendererIdentifier] = true;\n\t\t\t\t\t\t\t(renderer.contextualized = renderer.variable).notifies(renderer)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trenderer.executeWithin(function() {\n\t\t\t\t\t\t\trenderer.contextualized = renderer.variable.notifies(renderer)\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tif(value !== undefined || renderer.started){\n\t\t\t\t\t\trenderer.started = true\n\t\t\t\t\t\trenderer.renderUpdate(value, element)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, function(error) {\n\t\t\t\tconsole.error('Error rendering', renderer, error)\n\t\t\t})\n\t\t})\n\t\tif(!resolved){\n\t\t\t// start listening for changes immediately\n\t\t\tif (generalized) {\n\t\t\t\tvar rendererIdentifier = renderer.toString()\n\t\t\t\tif (!generalized[rendererIdentifier]) {\n\t\t\t\t\tgeneralized[rendererIdentifier] = true;\n\t\t\t\t\t(renderer.contextualized = renderer.variable).notifies(renderer)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\trenderer.executeWithin(function() {\n\t\t\t\t\trenderer.contextualized = renderer.variable.notifies(renderer)\n\t\t\t\t})\n\t\t\t}\n\t\t\tthis.deferredRender = deferredRender\n\t\t\tif (this.renderLoading) {\n\t\t\t\t// if we have loading renderer call it\n\t\t\t\tthis.renderLoading(deferredRender, element)\n\t\t\t}\n\t\t}\n\t}\n\tElementRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\tthrow new Error('renderUpdate(newValue) must be implemented')\n\t}\n\tRenderer.Renderer = Renderer\n\tRenderer.ElementRenderer = ElementRenderer\n\n\tfunction AttributeRenderer(options) {\n\t\tif(options.name){\n\t\t\tthis.name = options.name\n\t\t}\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tAttributeRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tAttributeRenderer.prototype.type = 'AttributeRenderer'\n\tAttributeRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\tif (typeof newValue == 'boolean' || newValue == null) {\n\t\t\t// for booleans or null/undefined, treat the attribute boolean-like, setting and removing\n\t\t\tif (newValue) {\n\t\t\t\telement.setAttribute(this.name, '') // \"set\" the attribute to enabled\n\t\t\t} else {\n\t\t\t\telement.removeAttribute(this.name) // disable the attribute, removing it\n\t\t\t}\n\t\t} else {\n\t\t\t// otherwise, assign value as string\n\t\t\telement.setAttribute(this.name, newValue)\n\t\t}\n\t}\n\tRenderer.AttributeRenderer = AttributeRenderer\n\n\tfunction PropertyRenderer(options) {\n\t\tif (options.name) {\n\t\t\tthis.name = options.name\n\t\t}\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tPropertyRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tPropertyRenderer.prototype.type = 'PropertyRenderer'\n\tPropertyRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\telement[this.name] = newValue\n\t}\n\tRenderer.PropertyRenderer = PropertyRenderer\n\n\tfunction InputPropertyRenderer(options) {\n\t\tif (options.element && options.element.tagName === 'SELECT' && options.name === 'value') {\n\t\t\t// use the deferred value assignment for , we may need to wait until the children are constructed\n\t\t\telement.eventualValue = newValue\n\t\t\tlang.nextTurn(function() {\n\t\t\t\tif (element.eventualValue) {\n\t\t\t\t\telement.value = element.eventualValue\n\t\t\t\t\telement.eventualValue = undefined\n\t\t\t\t}\n\t\t\t})\n\t\t} else {\n\t\t\telement.eventualValue = undefined\n\t\t}\n\t}\n\tRenderer.InputPropertyRenderer = InputPropertyRenderer\n\n\tfunction StyleRenderer(options) {\n\t\tif(options.name){\n\t\t\tthis.name = options.name\n\t\t}\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tStyleRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tStyleRenderer.prototype.type = 'StyleRenderer'\n\tStyleRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\telement.style[this.name] = newValue\n\t}\n\tRenderer.StyleRenderer = StyleRenderer\n\n\tfunction ContentRenderer(options) {\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tContentRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tContentRenderer.prototype.type = 'ContentRenderer'\n\tContentRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\telement.innerHTML = ''\n\t\tif (newValue === undefined){\n\t\t\tnewValue = ''\n\t\t}\n\t\telement.appendChild(document.createTextNode(newValue))\n\t}\n\tRenderer.ContentRenderer = ContentRenderer\n\n\tfunction TextRenderer(options) {\n\t\tthis.position = options.position\n\t\tthis.textNode = options.textNode\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tTextRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tTextRenderer.prototype.type = 'TextRenderer'\n\tTextRenderer.prototype.updated = function (updateEvent, context) {\n\t\tif (this.builtList) {\n\t\t\tif (updateEvent.type === 'replaced') {\n\t\t\t\tthis.builtList = false\n\t\t\t\tthis.omitValueOf = false\n\t\t\t} else {\n\t\t\t\t(this.updates || (this.updates = [])).push(updateEvent)\n\t\t\t}\n\t\t}\n\t\tElementRenderer.prototype.updated.call(this, updateEvent, context)\n\t}\n\tTextRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\tif (newValue == null){\n\t\t\tnewValue = ''\n\t\t}\n\t\tif (newValue.create) {\n\t\t\tnewValue = newValue.create({parent: element})\n\t\t}\n\t\tif (newValue.nodeType) {\n\t\t\tif (this.textNode && this.textNode.parentNode == element) {\n\t\t\t\t// text node is attached, we can replace it with the node\n\t\t\t\telement.replaceChild(newValue, this.textNode)\n\t\t\t} else {\n\t\t\t\telement.appendChild(newValue)\n\t\t\t}\n\t\t\tthis.textNode = newValue\n\t\t} else if (newValue instanceof Array) {\n\t\t\tthis.renderUpdate = ListRenderer.prototype.renderUpdate\n\t\t\tthis.omitValueOf = true\n\t\t\tthis.renderUpdate(newValue, element)\n\t\t} else {\n\t\t\t(this.textNode || element.childNodes[this.position]).nodeValue = newValue\n\t\t}\n\t}\n\tRenderer.TextRenderer = TextRenderer\n\n\tfunction ListRenderer(options) {\n\t\tif (options.each) {\n\t\t\tthis.each = options.each\n\t\t}\n\t\tElementRenderer.apply(this, arguments)\n\t}\n\tListRenderer.prototype = Object.create(ElementRenderer.prototype)\n\tListRenderer.prototype.updated = function (updateEvent, context) {\n\t\tif (this.builtList) {\n\t\t\tif (updateEvent.type === 'replaced') {\n\t\t\t\tthis.builtList = false\n\t\t\t\tthis.omitValueOf = false\n\t\t\t} else {\n\t\t\t\t(this.updates || (this.updates = [])).push(updateEvent)\n\t\t\t}\n\t\t}\n\t\tElementRenderer.prototype.updated.call(this, updateEvent, context)\n\t}\n\tListRenderer.prototype.type = 'ListRenderer'\n\tListRenderer.prototype.renderUpdate = function (newValue, element) {\n\t\tvar container\n\t\tvar each = this.each || function(item) { // TODO: make a single identity function\n\t\t\treturn item\n\t\t}\n\t\tvar thisElement = this.element\n\t\tvar renderer = this\n\t\tif (!this.builtList) {\n\t\t\tthis.builtList = true\n\t\t\tthis.omitValueOf = true\n\t\t\telement.innerHTML = ''\n\t\t\tvar childElements = this.childElements = []\n\t\t\tif (each.defineHasOwn) {\n\t\t\t\teach.defineHasOwn()\n\t\t\t}\n\t\t\tif (newValue) {\n\t\t\t\tvar renderEach = function(item) {\n\t\t\t\t\tchildElements.push(Renderer.append(thisElement, eachItem(item)))\n\t\t\t\t}\n\t\t\t\tvar variable = this.variable\n\t\t\t\tif (variable.collectionOf) {\n\t\t\t\t\tthis.executeWithin(function() {\n\t\t\t\t\t\tvariable.forEach(renderEach)\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tnewValue.forEach(renderEach)\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar contextualized = this.contextualized || this.variable\n\t\t\tcontextualized.notifies(this)\n\n\t\t\t// TODO: restore using a doc fragment to add these items:\n\t\t\t// thisElement.appendChild(container)\n\t\t} else {\n\t\t\tvar childElements = this.childElements\n\t\t\tvar updates = this.updates || [{ type: 'replaced' }]\n\t\t\tcontainer = thisElement\n\t\t\tupdates.forEach(function(update) {\n\t\t\t\tif (update.type === 'replaced') {\n\t\t\t\t\trenderer.builtList = false\n\t\t\t\t\tfor (var i = 0, l = childElements.length; i < l; i++) {\n\t\t\t\t\t\tthisElement.removeChild(childElements[i])\n\t\t\t\t\t}\n\t\t\t\t\trenderer.updateElement(thisElement)\n\t\t\t\t} else if (update.type === 'spliced') {\n\t\t\t\t\tvar index = update.start\n\t\t\t\t\tfor (var i = 0; i < update.deleteCount; i++) {\n\t\t\t\t\t\tthisElement.removeChild(childElements[update.start + i])\n\t\t\t\t\t}\n\t\t\t\t\tchildElements.splice(update.start, update.deleteCount)\n\t\t\t\t\tfor (var i = 0; i < update.items.length; i++) {\n\t\t\t\t\t\tvar value = update.items[i]\n\t\t\t\t\t\tvar nextChild = childElements[i + update.start]\n\t\t\t\t\t\tvar newElement = Renderer.append(thisElement, eachItem(value))\n\t\t\t\t\t\tif (nextChild) {\n\t\t\t\t\t\t\tthisElement.insertBefore(newElement, nextChild)\n\t\t\t\t\t\t\tchildElements.splice(i + update.start, 0, newElement)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tchildElements.push(newElement)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (update.type === 'property') {\n\t\t\t\t\t// should be handled by sub-renderers\n\t\t\t\t\t/*thisElement.removeChild(childElements[update.key])\n\t\t\t\t\tvar nextChild = childElements[update.key + 1]\n\t\t\t\t\tvar newElement = Renderer.append(thisElement, eachItem(update.target))\n\t\t\t\t\tthisElement.insertBefore(newElement, nextChild)\n\t\t\t\t\tchildElements[update.key] = newElement*/\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.updates = [] // clear the updates\n\t\t}\n\t\tfunction eachItem(item) {\n\t\t\tvar childElement\n\t\t\tif (each.create) {\n\t\t\t\tchildElement = each.create({parent: thisElement, _item: item}) // TODO: make a faster object here potentially\n\t\t\t} else {\n\t\t\t\tchildElement = each(item, thisElement)\n\t\t\t\tif (childElement && childElement.create) {\n\t\t\t\t\tchildElement = childElement.create({parent: thisElement, _item: item})\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn childElement\n\t\t}\n\t}\n\tRenderer.ListRenderer = ListRenderer\n\n\tRenderer.onShowElement = function(shownElement){\n\t\trequestAnimationFrame(function(){\n\t\t\tinvalidatedElements = null\n\t\t\tvar elements = [].slice.call(shownElement.getElementsByClassName('needs-rerendering'))\n\t\t\tif (shownElement.className.indexOf('needs-rerendering') > 0){\n\t\t\t\tvar includingTop = [shownElement]\n\t\t\t\tincludingTop.push.apply(includingTop, elements)\n\t\t\t\telements = includingTop\n\t\t\t}\n\t\t\tfor (var i = 0, l = elements.length; i < l; i++){\n\t\t\t\tvar element = elements[i]\n\t\t\t\tvar renderers = element.renderersOnShow\n\t\t\t\tif(renderers){\n\t\t\t\t\telement.renderersOnShow = null\n\t\t\t\t\t// remove needs-rerendering class\n\t\t\t\t\telement.className = element.className.replace(/\\s?needs\\-rerendering\\s?/g, '')\n\t\t\t\t\tfor (var id in renderers) {\n\t\t\t\t\t\tvar renderer = renderers[id]\n\t\t\t\t\t\tif (renderer.omitValueOf)\n\t\t\t\t\t\t\trenderer.omitValueOf = false\n\t\t\t\t\t\trenderer.updateElement(element)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\n\tfunction onElementRemoval(element){\n\t\t// cleanup element renderers\n\t\tif(element.alkaliRenderers){\n\t\t\tvar renderers = element.alkaliRenderers\n\t\t\tfor(var i = 0; i < renderers.length; i++){\n\t\t\t\tvar renderer = renderers[i]\n\t\t\t\trenderer.variable.stopNotifies(renderer)\n\t\t\t}\n\t\t}\n\t}\n\tRenderer.onElementRemoval = function(element, onlyChildren){\n\t\tif(!onlyChildren){\n\t\t\tonElementRemoval(element)\n\t\t}\n\t\tvar children = element.getElementsByTagName('*')\n\t\tfor(var i = 0, l = children.length; i < l; i++){\n\t\t\tvar child = children[i]\n\t\t\tif(child.alkaliRenderers){\n\t\t\t\tonElementRemoval(child)\n\t\t\t}\n\t\t}\n\t}\n\treturn Renderer\n}))\n","(function (root, factory) { if (typeof define === 'function' && define.amd) {\n\tdefine(['./Variable'], factory) } else if (typeof module === 'object' && module.exports) { \n module.exports = factory(require('./Variable')) // Node\n}}(this, function (VariableExports) {\n\n\tvar VBoolean = VariableExports.VBoolean\n\tvar VNumber = VariableExports.VNumber\n\tvar operatingFunctions = {};\n\tvar operators = {};\n\tfunction getOperatingFunction(expression){\n\t\t// jshint evil: true\n\t\treturn operatingFunctions[expression] ||\n\t\t\t(operatingFunctions[expression] =\n\t\t\t\tnew Function('a', 'b', 'return ' + expression));\n\t}\n\tfunction operator(operator, type, name, precedence, forward, reverseA, reverseB){\n\t\t// defines the standard operators\n\t\tvar reverse = function(output, inputs){\n\t\t\tvar a = inputs[0],\n\t\t\t\tb = inputs[1]\n\t\t\tvar firstError\n\t\t\tif(a && a.put){\n\t\t\t\ttry {\n\t\t\t\t\treturn a.put(reverseA(output, b && b.valueOf()))\n\t\t\t\t} catch(error) {\n\t\t\t\t\tif (error.deniedPut) {\n\t\t\t\t\t\tfirstError = error\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(b && b.put){\n\t\t\t\tb.put(reverseB(output, a && a.valueOf()))\n\t\t\t} else {\n\t\t\t\tthrow (firstError && firstError.message ? firstError : new Error('Can not assign change value to constant operators'))\n\t\t\t}\n\t\t};\n\t\t// define a function that can lazily ensure the operating function\n\t\t// is available\n\t\tvar operatorHandler = {\n\t\t\tapply: function(instance, args){\n\t\t\t\tforward = getOperatingFunction(forward);\n\t\t\t\treverseA = reverseA && getOperatingFunction(reverseA);\n\t\t\t\treverseB = reverseB && getOperatingFunction(reverseB);\n\t\t\t\tforward.reverse = reverse;\n\t\t\t\toperators[operator] = operatorHandler = new VariableExports.Variable(forward);\n\n\t\t\t\taddFlags(operatorHandler);\n\t\t\t\targs = Array.prototype.slice.call(args);\n\t\t\t\treturn operatorHandler.apply(instance, args);\n\t\t\t}\n\t\t};\n\t\tfunction addFlags(operatorHandler){\n\t\t\toperatorHandler.precedence = precedence;\n\t\t\toperatorHandler.infix = reverseB !== false;\n\t\t}\n\t\taddFlags(operatorHandler);\n\t\toperators[operator] = operatorHandler;\n\t\toperators[name] = function() {\n\t\t\tvar result = operatorHandler.apply(null, arguments)\n\t\t\treturn type ? result.as(type) : result\n\t\t}\n\t}\n\t// using order precedence from:\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence\n\toperator('+', VNumber, 'add', 6, 'a+b', 'a-b', 'a-b');\n\toperator('-', VNumber, 'subtract', 6, 'a-b', 'a+b', 'b-a');\n\toperator('*', VNumber, 'multiply', 5, 'a*b', 'a/b', 'a/b');\n\toperator('/', VNumber, 'divide', 5, 'a/b', 'a*b', 'b/a');\n//\toperator('^', 7, 'a^b', 'a^(-b)', 'Math.log(a)/Math.log(b)');\n\toperator('?', null, 'if', 16, 'b[a?0:1]', 'a===b[0]||(a===b[1]?false:(function(){throw new Error()})())', '[a,b]');\n\toperator(':', null, 'choose', 15, '[a,b]', 'a[0]?a[1]:(function(){throw new Error()})()', 'a[1]');\n\toperator('!', VBoolean, 'not', 4, '!a', '!a', false);\n\toperator('%', VNumber, 'remainder', 5, 'a%b');\n\toperator('>', VBoolean, 'greater', 8, 'a>b');\n\toperator('>=', VBoolean, 'greaterOrEqual', 8, 'a>=b');\n\toperator('<', VBoolean, 'less', 8, 'a\n(function (root, factory) { if (typeof define === 'function' && define.amd) {\n define(['./Element', './Renderer', './reactive', './Copy', './operators', './Variable', './util/lang', './util/ContextualPromise'], factory) } else if (typeof module === 'object' && module.exports) {\n module.exports = factory(require('./Element'), require('./Renderer'), require('./reactive'), require('./Copy'), require('./operators'), require('./Variable'), require('./util/lang'), require('./util/ContextualPromise')) // Node\n}}(this, function (Element, Renderer, reactive, Copy, operators, VariableExports, lang, ContextualPromise) {\n\n\tvar main = Object.create(Element)\n\tmain.Copy = Copy\n\tmain.Element = Element\n\tlang.copy(main, VariableExports)\n\tObject.defineProperty(main, 'currentContext', Object.getOwnPropertyDescriptor(VariableExports, 'currentContext'))\n\tmain.reactive = reactive\n\tlang.copy(main.react, reactive) // For backwards compatibility with babel transform\n\tmain.spawn = lang.spawn\n\tmain.when = lang.when\n\tmain.Renderer = Renderer.ElementRenderer\n\tlang.copy(main, Renderer)\n\tlang.copy(main, operators)\n\tmain.ContextualPromise = ContextualPromise\n\tmain.default = reactive // default export\n\tvar localGlobal = typeof window == 'undefined' ? global : window\n\tif (localGlobal.alkali) {\n\t\tconsole.warn('Multiple instances of alkali have been defined, which can cause alkali context instances to be out of sync')\n\t}\n\treturn localGlobal.alkali = main\n}))\n","(function (root, factory) { if (typeof define === 'function' && define.amd) {\n\tdefine(['./util/lang', './Renderer', './Variable'], factory) } else if (typeof module === 'object' && module.exports) {\n\tmodule.exports = factory(require('./util/lang'), require('./Renderer'), require('./Variable')) // Node\n}}(this, function (lang, Renderer, VariableExports) {\n\tvar Variable = VariableExports.Variable\n\tvar knownElementProperties = [\n\t\t'textContent', // Node\n\t\t'id', 'className', 'innerHTML', // Element\n\t\t'title', 'lang', 'hidden', 'translate', 'dir', 'tabIndex', 'accessKey', 'draggable', 'dropzone', 'spellcheck', 'contentEditable', 'innerText', // HTMLElement\n\t\t'translate', 'webkitdropzone'] // HTMLElement\n\n\tvar SELECTOR_REGEX = /^(\\.|#)([-\\w]+)(.+)?/\n\tvar isGenerator = lang.isGenerator\n\tvar Context = VariableExports.Context\n\tvar PropertyRenderer = Renderer.PropertyRenderer\n\tvar InputPropertyRenderer = Renderer.InputPropertyRenderer\n\tvar AttributeRenderer = Renderer.AttributeRenderer\n\tvar StyleRenderer = lang.compose(Renderer.StyleRenderer, function StyleRenderer() {\n\t\tRenderer.StyleRenderer.apply(this, arguments)\n\t}, {\n\t\trenderUpdate: function(newValue, element) {\n\t\t\tvar definition = styleDefinitions[this.name]\n\t\t\tif (definition) {\n\t\t\t\tdefinition(element, newValue, this.name)\n\t\t\t} else {\n\t\t\t\tif (this.name.indexOf('-') == -1)\n\t\t\t\t\tcssRule.style[this.name] = newValue\n\t\t\t\telse\n\t\t\t\t\tcssRule.setProperty(this.name, newValue)\n\t\t\t}\n\t\t}\n\t})\n\n\tvar construct = typeof Reflect !== 'undefined' ? Reflect.construct :\n\t\tfunction(Constructor, args, Class) {\n\t\t\treturn Constructor.apply(Object.create(Class.prototype), args)\n\t\t}\n\n\tvar constructOrCall = lang.constructOrCall\n\tvar ClassNameRenderer = lang.compose(Renderer.ElementRenderer, function ClassNameRenderer(options) {\n\t\tthis.name = options.name\n\t\tRenderer.apply(this, arguments)\n\t}, {\n\t\trenderUpdate: function(newValue, element) {\n\t\t\tvar currentClassName = element.className\n\t\t\tvar changingClassName = this.name\n\t\t\t// remove the className (needed for addition or removal)\n\t\t\t// see http://jsperf.com/remove-class-name-algorithm/2 for some tests on this\n\t\t\tvar removed = currentClassName && (' ' + currentClassName + ' ').replace(' ' + changingClassName + ' ', ' ')\n\t\t\tif (newValue) {\n\t\t\t\t// addition, add the className\n\t\t\t\tchangingClassName = currentClassName ? (removed + changingClassName).slice(1) : changingClassName;\n\t\t\t} else {\n\t\t\t\t// we already have removed the class, just need to trim\n\t\t\t\tchangingClassName = removed.slice(1, removed.length - 1)\n\t\t\t}\n\t\t\t// only assign if it changed, this can save a lot of time\n\t\t\tif (changingClassName != currentClassName) {\n\t\t\t\telement.className = changingClassName\n\t\t\t}\n\t\t}\n\t})\n\tvar PropertiesRenderer = lang.compose(Renderer.ElementRenderer, function PropertiesRenderer(options) {\n\t\tthis.PropertyRenderer = options.PropertyRenderer\n\t\tRenderer.apply(this, arguments)\n\t}, {\n\t\trenderUpdate: function(newValue, element) {\n\t\t\tvar newProperties = []\n\t\t\t// assign properties based on object properties\n\t\t\tfor (var name in newValue) {\n\t\t\t\tthis.PropertyRenderer.prototype.renderUpdate.call({\n\t\t\t\t\tname: name\n\t\t\t\t}, newValue[name], element)\n\t\t\t\tnewProperties.push(name)\n\t\t\t}\n\t\t\tvar lastProperties = this.lastProperties\n\t\t\tif (lastProperties) {\n\t\t\t\t// if previous state existed, remove old names of any properties that don't exist anymore\n\t\t\t\tfor (var i = 0, l = lastProperties.length; i < l; i++) {\n\t\t\t\t\tvar name = lastProperties[i]\n\t\t\t\t\tif (!(name in newValue)) {\n\t\t\t\t\t\tthis.PropertyRenderer.prototype.renderUpdate.call({\n\t\t\t\t\t\t\tname: name\n\t\t\t\t\t\t}, undefined, element)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.lastProperties = newProperties // store the class names if we need to remove any on next state change\n\t\t}\n\t})\n\n\t// TODO: check for renderContent with text updater\n\tvar TextRenderer = Renderer.TextRenderer\n\tvar ListRenderer = Renderer.ListRenderer\n\n\tvar doc = typeof document !== 'undefined' ? document : {\n\t\tcreateElement: function(tag) {\n\t\t\treturn {}\n\t\t},\n\t\taddEventListener: function() {\n\t\t}\n\t}\n\n\tvar inputs = {\n\t\tINPUT: 1,\n\t\tTEXTAREA: 1\n\t\t// SELECT: 1, we exclude this, so the default \"content\" of the element can be the options\n\t}\n\n\tvar canExtendBuiltinElements\n\tvar buggyConstructorSetter = false\n\tvar testElement = doc.createElement('font')\n\tvar originalConstructor = testElement.constructor\n\ttestElement.constructor = function(){}\n\tif (doc.createElement('font').constructor == testElement.constructor) {\n\t\t// In safari, setting the constructor can actually assign it at the prototype level, instead of at the instance\n\t\ttestElement.__proto__.constructor = originalConstructor // restore the original constructor\n\t\tbuggyConstructorSetter = true\n\t\tlang.buggyConstructorSetter = buggyConstructorSetter\n\t}\n\n\n\tfunction booleanStyle(options) {\n\t\treturn function(element, value, key) {\n\t\t\tif (typeof value !== 'string') {\n\t\t\t\t// use the boolean conversion\n\t\t\t\tvalue = options[value ? 0 : 1]\n\t\t\t}\n\t\t\telement.style[key] = value\n\t\t}\n\t}\n\n\tfunction defaultStyle(element, value, key) {\n\t\tif (typeof value === 'number') {\n\t\t\tvalue = value + 'px'\n\t\t}\n\t\telement.style[key] = value\n\t}\n\tfunction directStyle(element, value, key) {\n\t\telement.style[key] = value\n\t}\n\n\tvar styleDefinitions = {\n\t\tdisplay: booleanStyle(['', 'none']),\n\t\tvisibility: booleanStyle(['visible', 'hidden']),\n\t\tcolor: directStyle,\n\t\topacity: directStyle,\n\t\tzoom: directStyle,\n\t\tminZoom: directStyle,\n\t\tmaxZoom: directStyle,\n\t\tfontWeight: directStyle,\n\t\tposition: booleanStyle(['absolute', '']),\n\t\ttextDecoration: booleanStyle(['underline', '']),\n\t\tfontWeight: directStyle // numbers are allowed here (TODO: eventually allow booleans too)\n\t}\n\t;[\"alignContent\",\"alignItems\",\"alignSelf\",\"animation\",\"animationDelay\",\"animationDirection\",\"animationDuration\",\"animationFillMode\",\"animationIterationCount\",\"animationName\",\"animationPlayState\",\"animationTimingFunction\",\"backfaceVisibility\",\"background\",\"backgroundAttachment\",\"backgroundBlendMode\",\"backgroundClip\",\"backgroundColor\",\"backgroundImage\",\"backgroundOrigin\",\"backgroundPosition\",\"backgroundPositionX\",\"backgroundPositionY\",\"backgroundRepeat\",\"backgroundRepeatX\",\"backgroundRepeatY\",\"backgroundSize\",\"baselineShift\",\"border\",\"borderBottom\",\"borderBottomColor\",\"borderBottomLeftRadius\",\"borderBottomRightRadius\",\"borderBottomStyle\",\"borderBottomWidth\",\"borderCollapse\",\"borderColor\",\"borderImage\",\"borderImageOutset\",\"borderImageRepeat\",\"borderImageSlice\",\"borderImageSource\",\"borderImageWidth\",\"borderLeft\",\"borderLeftColor\",\"borderLeftStyle\",\"borderLeftWidth\",\"borderRadius\",\"borderRight\",\"borderRightColor\",\"borderRightStyle\",\"borderRightWidth\",\"borderSpacing\",\"borderStyle\",\"borderTop\",\"borderTopColor\",\"borderTopLeftRadius\",\"borderTopRightRadius\",\"borderTopStyle\",\"borderTopWidth\",\"borderWidth\",\"bottom\",\"boxShadow\",\"boxSizing\",\"bufferedRendering\",\"captionSide\",\"clear\",\"clip\",\"clipPath\",\"clipRule\",\"color\",\"colorInterpolation\",\"colorInterpolationFilters\",\"colorRendering\",\"counterIncrement\",\"counterReset\",\"cursor\",\"direction\",\"display\",\"emptyCells\",\"fill\",\"fillOpacity\",\"fillRule\",\"filter\",\"flex\",\"flexBasis\",\"flexDirection\",\"flexFlow\",\"flexGrow\",\"flexShrink\",\"flexWrap\",\"float\",\"floodColor\",\"floodOpacity\",\"font\",\"fontFamily\",\"fontFeatureSettings\",\"fontKerning\",\"fontSize\",\"fontStretch\",\"fontStyle\",\"fontVariant\",\"fontVariantLigatures\",\"fontWeight\",\"height\",\"imageRendering\",\"isolation\",\"justifyContent\",\"left\",\"letterSpacing\",\"lightingColor\",\"lineHeight\",\"listStyle\",\"listStyleImage\",\"listStylePosition\",\"listStyleType\",\"margin\",\"marginBottom\",\"marginLeft\",\"marginRight\",\"marginTop\",\"marker\",\"markerEnd\",\"markerMid\",\"markerStart\",\"mask\",\"maskType\",\"maxHeight\",\"maxWidth\",\"maxZoom\",\"minHeight\",\"minWidth\",\"minZoom\",\"mixBlendMode\",\"motion\",\"motionOffset\",\"motionPath\",\"motionRotation\",\"objectFit\",\"objectPosition\",\"opacity\",\"order\",\"orientation\",\"orphans\",\"outline\",\"outlineColor\",\"outlineOffset\",\"outlineStyle\",\"outlineWidth\",\"overflow\",\"overflowWrap\",\"overflowX\",\"overflowY\",\"padding\",\"paddingBottom\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"page\",\"pageBreakAfter\",\"pageBreakBefore\",\"pageBreakInside\",\"paintOrder\",\"perspective\",\"perspectiveOrigin\",\"pointerEvents\",\"position\",\"quotes\",\"resize\",\"right\",\"shapeImageThreshold\",\"shapeMargin\",\"shapeOutside\",\"shapeRendering\",\"size\",\"speak\",\"src\",\"stopColor\",\"stopOpacity\",\"stroke\",\"strokeDasharray\",\"strokeDashoffset\",\"strokeLinecap\",\"strokeLinejoin\",\"strokeMiterlimit\",\"strokeOpacity\",\"strokeWidth\",\"tabSize\",\"tableLayout\",\"textAlign\",\"textAlignLast\",\"textAnchor\",\"textCombineUpright\",\"textDecoration\",\"textIndent\",\"textOrientation\",\"textOverflow\",\"textRendering\",\"textShadow\",\"textTransform\",\"top\",\"touchAction\",\"transform\",\"transformOrigin\",\"transformStyle\",\"transition\",\"transitionDelay\",\"transitionDuration\",\"transitionProperty\",\"transitionTimingFunction\",\"unicodeBidi\",\"unicodeRange\",\"userZoom\",\"vectorEffect\",\"verticalAlign\",\"visibility\",\"whiteSpace\",\"widows\",\"width\",\"willChange\",\"wordBreak\",\"wordSpacing\",\"wordWrap\",\"writingMode\",\"zIndex\",\"zoom\"].forEach(function(property) {\n\t\tstyleDefinitions[property] = styleDefinitions[property] || defaultStyle\n\t})\n\tvar styleSheet\n\tvar presumptiveParentMap = new lang.WeakMap()\n\n\tvar setPrototypeOf = lang.setPrototypeOf\n\tvar getPrototypeOf = Object.getPrototypeOf || (function(base) { return base.__proto__ })\n\tfunction createCssRule(selector) {\n\t\tif (!styleSheet) {\n\t\t\tvar styleSheetElement = doc.createElement(\"style\")\n\t\t\tstyleSheetElement.setAttribute(\"type\", \"text/css\")\n//\t\t\tstyleSheet.appendChild(doc.createTextNode(css))\n\t\t\tdoc.head.insertBefore(styleSheetElement, doc.head.firstChild)\n\t\t\tstyleSheet = styleSheetElement.sheet\n\t\t}\n\t\tvar cssRules = styleSheet.cssRules || styleSheet.rules\n\t\treturn cssRules[styleSheet.insertRule(selector + ' {}', cssRules.length)]\n\t}\n\n\t// TODO: Need to do some more testing to see if that would improve performance:\n\t// var fragmentThresholdHeuristic = (typeof navigator !== 'undefined' && navigator.userAgent.indexOf('Chrome') > 0) ? 1 : 3\n\n\tfunction layoutChildren(parent, children, container, prepend) {\n\t\tvar fragment = (children.length > 1 || prepend) ? doc.createDocumentFragment() : parent\n\t\tfor(var i = 0, l = children.length; i < l; i++) {\n\t\t\tvar child = children[i]\n\t\t\tvar childNode\n\t\t\tif (child != null) { // we just skip nulls and undefined, helps make it easier to write conditional element logic\n\t\t\t\tif (child.notifies) {\n\t\t\t\t\t// a variable\n\t\t\t\t\tvar ref = child.isIterable ? fragment : parent\n\t\t\t\t\tfragment.appendChild(childNode = variableAsContent(ref, child))\n\t\t\t\t} else if (typeof child === 'function') {\n\t\t\t\t\t// an element constructor\n\t\t\t\t\tcurrentParent = parent\n\t\t\t\t\tchildNode = new child()\n\t\t\t\t\tfragment.appendChild(childNode)\n\t\t\t\t\tif (child.isContentNode) {\n\t\t\t\t\t\tcontainer.contentNode = childNode\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof child == 'object') {\n\t\t\t\t\tif (child instanceof Array) {\n\t\t\t\t\t\t// array of sub-children\n\t\t\t\t\t\tcontainer = container || parent\n\t\t\t\t\t\tchildNode = childNode || parent\n\t\t\t\t\t\tlayoutChildren(childNode.contentNode || childNode, child, container)\n\t\t\t\t\t} else if (child.nodeType) {\n\t\t\t\t\t\t// an element itself\n\t\t\t\t\t\tfragment.appendChild(childNode = child)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// TODO: apply properties to last child, but with binding to the parent (for events)\n\t\t\t\t\t\tthrow new Error('Unknown child type ' + child)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// a primitive value\n\t\t\t\t\tchildNode = doc.createTextNode(child)\n\t\t\t\t\tfragment.appendChild(childNode)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (fragment != parent) {\n\t\t\tif (prepend) {\n\t\t\t\tparent.insertBefore(fragment, parent.firstChild)\n\t\t\t} else {\n\t\t\t\tparent.appendChild(fragment)\n\t\t\t}\n\t\t}\n\t\treturn childNode\n\t}\n\tfunction variableAsContent(parent, content) {\n\t\tif (content == null) {\n\t\t\treturn doc.createTextNode('')\n\t\t}\n\t\tvar textNode\n\t\tif (content.notifies) {\n\t\t\ttextNode = doc.createTextNode('')\n\t\t\tvar renderer = new TextRenderer({\n\t\t\t\telement: parent,\n\t\t\t\ttextNode: textNode,\n\t\t\t\tvariable: content\n\t\t\t})\n\t\t\ttextNode = renderer.textNode // it can be swapped for another node\n\t\t} else {\n\t\t\ttextNode = doc.createTextNode(content)\n\t\t}\n\t\treturn textNode\n\t}\n\n\tfunction bidirectionalHandler(element, value, key) {\n\t\tif (value && value.notifies) {\n\t\t\tnew InputPropertyRenderer({\n\t\t\t\tname: key,\n\t\t\t\tvariable: value,\n\t\t\t\telement: element\n\t\t\t})\n\t\t\tif (inputs[element.tagName] || element.tagName === 'SELECT') {\n\t\t\t\tbindChanges(element, value, key)\n\t\t\t}\n\t\t} else {\n\t\t\tif (element.tagName === 'SELECT' && key === 'value') {\n\t\t\t\t// use the deferred