{"version":3,"sources":["../node_modules/react/jsx-runtime.js","../node_modules/react/index.js","../node_modules/node-libs-browser/node_modules/buffer/index.js","../../../../src/utils/leb128.ts","../../../../src/canisters/management_idl.ts","../../../../src/canisters/management.ts","../../../../src/utils/hash.ts","../../../src/idl.ts","../../../../../src/vendor/bls/bls.ts","../../../../src/utils/bls.ts","../../../src/certificate.ts","../../../../src/polling/strategy.ts","../../../../src/polling/index.ts","../../../src/actor.ts","../../../src/types.ts","../../../../src/utils/base32.ts","../../../../src/utils/getCrc.ts","../../../src/principal.ts","../../../../src/utils/sha224.ts","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/generatePath.js","../../modules/Redirect.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../index.ts","../../../src/request_id.ts","../../../../src/agent/index.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../../../src/cbor.ts","../../../../src/identity/ed25519.ts","../../../../src/identity/delegation.ts","../../../../src/identity/webauthn.ts","../node_modules/webpack/buildin/global.js","../node_modules/prop-types/index.js","../../../../../src/agent/http/transforms.ts","../node_modules/borc/src/index.js","../node_modules/@dfinity/identity/node_modules/tweetnacl/nacl-fast.js","../node_modules/react-dom/index.js","../node_modules/buffer-pipe/index.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/bignumber.js/bignumber.js","../node_modules/borc/src/constants.js","../../../src/auth.ts","../../../../../src/agent/http/types.ts","../node_modules/js-sha256/src/sha256.js","../node_modules/lodash.debounce/index.js","../node_modules/object-assign/index.js","../node_modules/borc/src/utils.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/path-to-regexp/index.js","../node_modules/fast-deep-equal/es6/react.js","../node_modules/ieee754/index.js","../../../../../src/agent/http/index.ts","../node_modules/borc/src/decoder.js","../node_modules/borc/src/simple.js","../node_modules/borc/src/tagged.js","../node_modules/iso-url/index.js","../node_modules/iso-url/src/url-browser.js","../value.ts","../../../../src/agent/proxy.ts","../node_modules/react-is/index.js","../node_modules/base64-arraybuffer/lib/base64-arraybuffer.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../src/index.ts","../../node_modules/react-is/cjs/react-is.production.min.js","../../node_modules/object-assign/index.js","../../node_modules/react-is/cjs/react-is.development.js","../../node_modules/react-is/index.js","../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../node_modules/prop-types/checkPropTypes.js","../../node_modules/prop-types/factoryWithTypeCheckers.js","../../node_modules/prop-types/factoryWithThrowingShims.js","../../node_modules/prop-types/index.js","../../src/index.js","../node_modules/lottie-web/build/player/lottie.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/base64-js/index.js","../node_modules/isarray/index.js","../node_modules/safe-buffer/index.js","../node_modules/process/browser.js","../node_modules/webpack/buildin/amd-options.js","../node_modules/borc/src/diagnose.js","../node_modules/borc/src/decoder.asm.js","../node_modules/iso-url/src/relative.js","../node_modules/borc/src/encoder.js","../serializer.ts","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/path-to-regexp/node_modules/isarray/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js"],"names":["module","exports","require","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","length","RangeError","Uint8Array","__proto__","prototype","arg","encodingOrOffset","this","Error","allocUnsafe","from","value","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","val","type","data","fromObject","assertSize","size","i","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","c","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","Symbol","species","Object","defineProperty","configurable","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","join","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","floor","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","IDL","compute_allocation","memory_allocation","provisional_create_canister_with_cycles","s","t","alphabet","historyContext","name","context","createContext","createNamedContext","Router","location","props","computeRootMatch","path","url","params","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","unlisten","render","RouterContext","history","state","staticContext","HistoryContext","children","React","Component","Lifecycle","onMount","componentDidUpdate","onUpdate","prevProps","onUnmount","cache","cacheCount","generatePath","generator","pathToRegexp","compilePath","pretty","Redirect","computedMatch","to","method","createLocation","prevLocation","locationsAreEqual","key","matchPath","options","exact","strict","sensitive","matched","cacheKey","pathCache","keys","result","regexp","values","memo","Route","component","addLeadingSlash","stripBasename","basename","base","createURL","createPath","staticHandler","methodName","invariant","noop","Switch","child","element","useContext","useHistory","useLocation","useParams","_extends","assign","source","hasOwnProperty","BrowserRouter","createHistory","resolveToLocation","currentLocation","normalizeToLocation","forwardRefShim","C","forwardRef","LinkAnchor","innerRef","navigate","onClick","rest","event","ex","isModifiedEvent","forwardedRef","Link","href","NavLink","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","isActive","locationProp","styleProp","style","toLocation","escapedPath","classnames","joinClassnames","_setPrototypeOf","o","p","setPrototypeOf","_inheritsLoose","subClass","superClass","create","constructor","_objectWithoutPropertiesLoose","excluded","sourceKeys","prefix","condition","message","isAbsolute","charAt","spliceOne","index","k","pop","resolvePathname","hasTrailingSlash","toParts","split","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","valueOf","valueEqual","every","item","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","search","hash","hashIndex","searchIndex","parsePath","decodeURI","URIError","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","callback","appendListener","fn","listener","filter","notifyListeners","_len","args","_key","forEach","canUseDOM","window","document","createElement","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_ref","_window$location","createKey","random","transitionManager","setState","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","addEventListener","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","substring","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","allPaths","baseTag","querySelector","getAttribute","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","map","entry","nextIndex","nextEntries","splice","canGo","secretKey","g","Function","Diagnose","Decoder","Encoder","Simple","Tagged","decodeAll","decodeFirst","diagnose","encode","decode","leveldb","nacl","gf","init","r","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","h","l","vn","xi","yi","d","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","inp","u","j0","j1","j2","j3","j4","j5","j6","j7","j8","j9","j10","j11","j12","j13","j14","j15","x0","x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","x12","x13","x14","x15","core_salsa20","crypto_core_hsalsa20","core_hsalsa20","sigma","crypto_stream_salsa20_xor","cpos","mpos","z","crypto_stream_salsa20","crypto_stream","sn","crypto_stream_xor","poly1305","t0","t1","t2","t3","t4","t5","t6","t7","Uint16Array","pad","leftover","fin","crypto_onetimeauth","outpos","update","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","v","sel25519","q","pack25519","neq25519","par25519","unpack25519","A","Z","M","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","S","inv25519","pow2523","crypto_scalarmult","f","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","mac","macpos","mask","want","crypto_box_afternm","crypto_box_open_afternm","K","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","tl","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","crypto_hash","add","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","reduce","crypto_sign","sm","smlen","crypto_sign_open","chk","num","den","den2","den4","den6","unpackneg","crypto_secretbox_BOXZEROBYTES","crypto_sign_BYTES","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","checkLengths","checkArrayTypes","cleanup","lowlevel","crypto_box","crypto_box_open","crypto_secretbox_KEYBYTES","crypto_secretbox_NONCEBYTES","crypto_secretbox_ZEROBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SECRETKEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_NONCEBYTES","crypto_box_ZEROBYTES","crypto_box_BOXZEROBYTES","crypto_sign_SEEDBYTES","crypto_hash_BYTES","randomBytes","secretbox","msg","nonce","open","box","nonceLength","overheadLength","scalarMult","scalarLength","groupElementLength","publicKey","before","checkBoxLengths","after","keyPair","fromSecretKey","publicKeyLength","secretKeyLength","sharedKeyLength","sign","signedMsg","tmp","mlen","detached","sig","verify","fromSeed","seed","seedLength","signatureLength","hashLength","setPRNG","crypto","self","msCrypto","getRandomValues","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","err","console","error","_bytesRead","_bytesWrote","globalObject","BigNumber","isNumeric","mathceil","ceil","mathfloor","bignumberError","tooManyDigits","BASE","LOG_BASE","MAX_SAFE_INTEGER","POWS_TEN","SQRT_BASE","MAX","bitFloor","coeffToString","xc","yc","intCheck","isOdd","toExponential","toFixedPoint","zs","clone","configObject","div","convertBase","parseNumeric","P","ONE","DECIMAL_PLACES","ROUNDING_MODE","TO_EXP_NEG","TO_EXP_POS","MIN_EXP","MAX_EXP","CRYPTO","MODULO_MODE","POW_PRECISION","FORMAT","groupSize","secondaryGroupSize","groupSeparator","decimalSeparator","fractionGroupSize","fractionGroupSeparator","suffix","ALPHABET","caseChanged","isNum","_isBigNumber","test","round","DEBUG","toUpperCase","format","rm","id","c0","ne","maxOrMin","normalise","sd","ni","rd","pows10","ROUND_UP","ROUND_DOWN","ROUND_CEIL","ROUND_FLOOR","ROUND_HALF_UP","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_CEIL","ROUND_HALF_FLOOR","EUCLID","config","EXPONENTIAL_AT","RANGE","isBigNumber","maximum","lt","minimum","gt","pow2_53","random53bitInt","dp","rand","Uint32Array","sum","plus","decimal","toBaseOut","baseIn","baseOut","arrL","reverse","callerIsToString","multiply","temp","xlo","xhi","klo","khi","aL","bL","cmp","subtract","more","prod","prodL","qc","rem","remL","rem0","xL","yc0","yL","yz","NaN","basePrefix","dotAfter","dotBefore","isInfinityOrNaN","whitespaceOrPlus","p1","p2","absoluteValue","abs","comparedTo","decimalPlaces","dividedBy","dividedToIntegerBy","idiv","exponentiatedBy","half","isModExp","nIsBig","nIsNeg","nIsOdd","isInteger","mod","times","integerValue","isEqualTo","eq","isGreaterThan","isGreaterThanOrEqualTo","gte","isLessThan","isLessThanOrEqualTo","lte","isNegative","isPositive","isZero","minus","xLTy","xe","ye","modulo","multipliedBy","xcL","ycL","ylo","yhi","zc","sqrtBase","negated","precision","shiftedBy","squareRoot","sqrt","rep","toFixed","toFormat","g1","g2","intPart","fractionPart","isNeg","intDigits","RegExp","toFraction","md","exp","n0","n1","toNumber","toPrecision","define","Bignumber","MT","POS_INT","NEG_INT","BYTE_STRING","UTF8_STRING","ARRAY","MAP","TAG","SIMPLE_FLOAT","DATE_STRING","DATE_EPOCH","POS_BIGINT","NEG_BIGINT","DECIMAL_FRAC","BIGFLOAT","BASE64URL_EXPECTED","BASE64_EXPECTED","BASE16_EXPECTED","CBOR","URI","BASE64URL","BASE64","REGEXP","MIME","NUMBYTES","ZERO","TWO","FOUR","EIGHT","INDEFINITE","SIMPLE","FALSE","TRUE","NULL","UNDEFINED","SYMS","PARENT","BREAK","STREAM","SHIFT32","SHIFT16","MAX_SAFE_HIGH","NEG_ONE","TEN","OBJECT","ERROR","WINDOW","root","JS_SHA256_NO_WINDOW","WEB_WORKER","NODE_JS","JS_SHA256_NO_NODE_JS","process","versions","node","COMMON_JS","JS_SHA256_NO_COMMON_JS","AMD","ARRAY_BUFFER","JS_SHA256_NO_ARRAY_BUFFER","HEX_CHARS","EXTRA","SHIFT","OUTPUT_TYPES","JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW","createOutputMethod","outputType","is224","Sha256","createMethod","nodeWrap","eval","algorithm","nodeMethod","createHash","digest","createHmacOutputMethod","HmacSha256","createHmacMethod","sharedMemory","hBytes","finalized","hashed","first","oKeyPad","iKeyPad","inner","notString","lastByteIndex","finalize","s0","s1","maj","ab","da","cd","bc","hex","arrayBuffer","dataView","DataView","setUint32","innerHash","sha256","sha224","hmac","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","objectToString","nativeMax","nativeMin","now","Date","isObject","isObjectLike","isSymbol","other","isBinary","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","thisArg","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","remainingWait","debounced","isInvoking","cancel","clearTimeout","flush","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","getOwnPropertyNames","test2","test3","letter","shouldUseNative","symbols","constants","parseHalf","mant","arrayBufferToBignumber","buildMap","Map","buildInt32","buildInt64","f1","f2","writeHalf","u32","s16","keySorter","lenA","lenB","isNegativeZero","nextPowerOf2","count","MAX_SIGNED_31_BIT_INT","commonjsGlobal","globalThis","createEventEmitter","handlers","on","handler","off","get","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","Provider","_Component","_this","emitter","_proto","getChildContext","componentWillReceiveProps","nextProps","oldValue","childContextTypes","PropTypes","object","isRequired","Consumer","_Component2","_this2","getValue","observedBits","_proto2","contextTypes","isarray","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","delimiter","exec","escaped","next","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","matches","flags","opts","encodeURIComponent","token","segment","JSON","stringify","attachKeys","re","route","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","stringToRegexp","equal","has","Set","$$typeof","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","log","LN2","parser","utils","URL","_heap","_heap8","_buffer","_reset","_knownTags","0","1","2","3","4","5","32","35","tags","bind","pushInt","pushInt32","pushInt32Neg","pushInt64","pushInt64Neg","pushFloat","pushFloatSingle","pushFloatDouble","pushTrue","pushFalse","pushUndefined","pushNull","pushInfinity","pushInfinityNeg","pushNaN","pushNaNNeg","pushArrayStart","pushArrayStartFixed","pushArrayStartFixed32","pushArrayStartFixed64","pushObjectStart","pushObjectStartFixed","pushObjectStartFixed32","pushObjectStartFixed64","pushByteString","pushByteStringStart","pushUtf8String","pushUtf8StringStart","pushSimpleUnassigned","pushTagUnassigned","pushTagStart","pushTagStart4","pushTagStart8","pushBreak","_parents","_depth","_currentParent","ref","_closeParent","_push","createTag","createByteString","createUtf8String","createMap","createObject","createArray","_dec","hasChildren","tmpKey","_createParent","_res","tagNumber","typ","raw","createByteStringFromHeap","createInt","createInt32","createInt64","createFloat","createFloatSingle","createFloatDouble","createInt32Neg","createInt64Neg","createTrue","createFalse","createNull","createUndefined","createInfinity","createInfinityNeg","createNaN","createNaNNeg","createUtf8StringFromHeap","createSimpleUnassigned","_createArrayStartFixed","len1","len2","len3","len4","_createObjectStartFixed","tag","_decode","input","enc","encodeCBOR","gen","_pushInt","hasParent","_pushTag","pushAny","convert","converters","er","URLWithLegacySupport","URLSearchParams","defaultBase","relative","protocol","host","super","auth","username","password","query","startsWith","hostname","origin","port","searchParams","createObjectURL","revokeObjectURL","userPass","chars","lookup","arraybuffer","encoded1","encoded2","encoded3","encoded4","bufferLength","reactIs","REACT_STATICS","contextType","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","for","w","require$$0","checkPropTypes","typeSpecs","componentName","getStack","resetWarningCache","emptyFunction","emptyFunctionWithReset","shim","propName","propFullName","secret","ReactPropTypesSecret","getShim","ReactPropTypes","bool","number","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","require$$2","Lottie","animationData","play","speed","direction","segmentsIn","segments","goTo","renderer","loop","rendererSettingsIn","rendererSettings","audioFactory","onLoad","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","animElementRef","useRef","animRef","useState","ready","setReady","setSegments","useEffect","setRendererSettings","container","autoplay","wasPlayingSegmentsRef","playReverse","factory","svgNS","locationHref","initialDefaultFrame","subframeEnabled","expressionsPlugin","isSafari","cachedColors","bmRnd","bmPow","bmSqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface","propertyNames","absArr","createSizedArray","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","flag","styleDiv","position","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","color","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","colorMap","BaseEvent","triggerEvent","eventName","_cbs","createTypedArray","createRegularArray","Uint8ClampedArray","Float32Array","Int16Array","createNS","createElementNS","DynamicPropertyContainer","addDynamicProperty","prop","dynamicProperties","_isAnimated","iterateDynamicProperties","_mdf","initDynamicPropertyContainer","getBlendMode","blendModeEnums","6","7","8","9","10","11","12","13","14","15","mode","Matrix","_cos","cos","_sin","sin","_tan","tan","_rnd","reset","rotate","angle","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","sy","skew","ax","ay","skewFromAxis","scale","sz","setTransform","translate","tz","transform","a2","c2","e2","i2","k2","l2","m2","n2","o2","_p","_identityCalculated","a1","c1","e1","i1","k1","l1","m1","o1","isIdentity","_identity","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","pt","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","pt1","pt2","pt3","p0","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","pool","math","width","startdenom","significance","overflow","ARC4","keylen","me","flatten","depth","mixkey","smear","stringseed","tostring","shortseed","entropy","browser","plugins","screen","autoseed","arc4","prng","int32","quick","double","pass","is_math_call","BezierFactory","ob","nm","beziers","bezEasing","BezierEasing","kSampleStepSize","float32ArraySupported","aA1","aA2","B","calcBezier","aT","getSlope","points","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","extendPrototype","sources","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","bezFunction","pointOnLine2D","y1","y2","y3","det1","getBezierLength","pt4","ptCoord","perc","ptDistance","curveSegments","addedLength","point","lastPoint","lengthData","bezierLengthPool","newElement","percents","lengths","BezierData","segmentLength","PointData","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","segmentsLengthPool","closed","pathV","pathO","pathI","_length","totalLength","getNewSegment","startPerc","endPerc","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","lastTime","vendors","requestAnimationFrame","cancelAnimationFrame","currTime","getTime","timeToCall","bez","dataFunctionManager","completeLayers","layers","comps","fontManager","layerData","jLen","kLen","completed","tt","td","hasMask","maskProps","masksProperties","convertPathsToAbsoluteValues","findCompLayers","refId","completeShapes","shapes","singleShape","__used","ks","it","checkVersion","animVersionString","animVersion","checkText","minimumVersion","updateTextLayer","textLayer","documentData","iterateLayers","assets","checkChars","pathData","paths","__converted","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","moduleOb","__complete","dataManager","getFontProperties","fontData","styles","fStyle","fWeight","weight","FontManager","emptyChar","combinedCharacters","setUpNode","font","family","parentNode","setAttribute","fontFamily","innerText","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","appendChild","body","offsetWidth","familyArray","enabledFamilies","trimFontOptions","parent","createHelper","def","tHelper","fontProps","fFamily","textContent","fClass","getContext","Font","fonts","typekitLoaded","isLoaded","_warned","initTime","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","getCombinedCharacterCodes","addChars","ch","addFonts","defs","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","helper","getCharData","char","warn","getFontByName","fName","measureText","fontName","doubleSize","getComputedTextLength","singleSize","loadedCount","removeChild","PropertyFactory","initFrame","mathAbs","interpolateValue","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","fnc","iterationIndex","lastIndex","keyframes","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","quaternionToEuler","omega","cosom","sinom","scale0","scale1","az","aw","bx","by","bz","bw","acos","slerp","createQuaternion","c3","s2","s3","getValueAtCurrentTime","comp","renderedFrame","endTime","_caching","renderResult","setVValue","multipliedValue","mult","processEffectsSequence","elem","globalData","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","st","KeyframedMultidimensionalProperty","arrLen","getProp","TransformPropertyFactory","defaultVector","TransformProperty","pre","appliedTransformations","px","py","pz","rx","ry","rz","or","sa","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","frameRate","autoOriented","v1","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","ShapePath","_maxLength","setPathData","setLength","pointPool","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","shapePool","releaseShapes","addShape","ShapeProperty","shapeCollectionPool","newShapeCollection","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","_cw","_v","StarShapeProperty","StarShapePropertyFactory","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","os","rad","roundness","perimSegment","numPts","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","RoundCornersModifier","PuckerAndBloatModifier","RepeaterModifier","ShapeCollection","DashProperty","dataProps","dashStr","dashArray","dashoffset","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","release","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","shapePath","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","processPath","clonedPath","currentV","currentI","currentO","closerV","distance","newPosPerc","amount","centerPoint","pathLength","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","items","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","op","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","comparePoints","buildShapeString","pathNodes","_o","_i","shapeString","audioControllerFactory","AudioController","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","ImagePreloader","proxyImage","canvas","height","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","assetLoader","load","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","cb","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","destroy","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","featureSupport","maskType","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","formatResponse","xhr","response","responseText","errorCallback","XMLHttpRequest","responseType","onreadystatechange","readyState","status","send","TextAnimatorProperty","textData","renderType","_hasMaskedPath","_frameId","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","sw","fc","fh","fs","fb","TextSelectorProp","getTextSelectorProp","LetterProps","TextProperty","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","of","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","searchProperties","maskManager","getMaskProperty","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","animators","matrixHelper","mHelper","renderedLettersCount","letters","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","currentLine","letterM","letterP","defaultPropsArray","animatorJustifyOffset","animatorFirstCharOffset","justifyOffsetMult","isNewLine","getMult","anIndexes","totalChars","line","extra","an","animatorOffset","rot","atan","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","text","charCode","charactersArray","newLineFlag","charData","anchorGrouping","currentSize","currentPos","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","animatorData","letterData","based","indexes","rn","newInd","currentInd","updateDocumentData","newData","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorPropFactory","_currentTextLength","finalS","finalE","textProperty","easer","tot","newCharsFlag","divisor","poolFactory","initialLength","_create","_release","pooling","cloned","shapeCollection","markerParser","parsePayloadLines","payload","lines","keysCount","_markers","markers","_marker","markerData","tm","duration","dr","cm","_","__","BaseRenderer","SVGRenderer","animationItem","svgElement","ariaLabel","title","titleElement","titleId","description","descElement","descId","maskElement","layerElement","renderConfig","preserveAspectRatio","imagePreserveAspectRatio","progressiveLoad","hideOnTransparent","viewBoxOnly","viewBoxSize","focusable","filterSize","pendingElements","destroyed","rendererType","CanvasRenderer","clearCanvas","dpr","wrapper","devicePixelRatio","currentGlobalAlpha","contextData","CVContextData","transformMat","HybridRenderer","threeDElements","camera","supports3d","MaskElement","viewData","solidPath","rect","expansor","feMorph","properties","currentMasks","layerId","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","addRenderableComponent","HierarchyElement","FrameElement","TransformElement","RenderableElement","RenderableDOMElement","ProcessedElement","SVGStyleData","level","lvl","hd","pElem","msElem","SVGShapeData","transformers","caches","lStr","SVGTransformData","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","checkLayers","ip","buildItem","checkPendingElements","createItem","layer","createImage","createComp","createSolid","createShape","createText","createCamera","createFootage","AudioElement","FootageElement","buildAllItems","includeLayers","newLayers","setProjectInterface","pInterface","projectInterface","initItems","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","searchExtraCompositions","xt","initExpressions","registerComposition","setupGlobalData","animData","fontsContainer","getAssetData","imageLoader","imagePreloader","audioController","fr","compSize","NullElement","SVGShapeElement","SVGTextLottieElement","IImageElement","SVGCompElement","ISolidElement","configAnimation","maskId","updateContainerSize","appendElementInPos","setMatte","checkParenting","renderFrame","currentFrame","prepareFrame","getBaseElement","nextElement","insertBefore","hide","show","CVShapeElement","CVTextElement","CVImageElement","CVCompElement","CVSolidElement","ctxTransform","cProps","cTr","trProps","canvasContext","ctxOpacity","globalAlpha","cO","restore","save","actionFlag","cArrPos","duplicate","saved","savedOp","blendMode","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","par","fillType","beginPath","closePath","clip","clearRect","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","HShapeElement","HTextElement","HCameraElement","HImageElement","HCompElement","HSolidElement","startPos","endPos","perspectiveElem","createThreeDContainer","center","webkitTransform","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","svg","setup","cWidth","cHeight","webkitPerspective","perspective","floatingContainer","isFirstFrame","finalMat","finalTransform","mProp","getMaskelement","pathString","pathShapeValue","initHierarchy","_isParent","prepareProperties","isVisible","initTransform","_matMdf","_opMdf","ao","renderTransform","globalToLocal","transforms","ptNew","initRenderable","isInRange","hidden","isTransparent","renderableComponents","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","renderRenderable","sourceRectAtTime","getLayerSize","initElement","initBaseData","initRendererElement","createContainerElements","createRenderableComponents","createContent","baseElement","renderElement","renderInnerContent","innerElem","destroyBaseElement","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","stop","cst","opacityId","opFill","ms","ost","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","dist","createRenderFunction","ShapeTransformManager","sequences","sequenceList","transform_key_count","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","BaseElement","SVGBaseElement","IShapeElement","ITextElement","ICompElement","sourceRect","_isPlaying","_canPlay","_currentTime","_placeholder","textSpans","shapesData","stylesList","shapeModifiers","itemsData","processedElements","animatedContents","SVGTintFilter","filterManager","matrixFilter","effectElements","feMergeNode","feMerge","SVGFillFilter","SVGGaussianBlurEffect","feGaussianBlur","SVGStrokeEffect","initialized","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feOffset","feFlood","feComposite","originalNodeAdded","sequence","processSequence","processSequences","getNewKey","checkMasks","layerInterface","LayerExpressionInterface","registerMaskInterface","effectsInterface","EffectsExpressionInterface","createEffectsInterface","registerEffectsInterface","compInterface","CompExpressionInterface","shapeInterface","ShapeExpressionInterface","content","textInterface","TextExpressionInterface","setBlendMode","blendModeValue","bm","sr","effectsManager","EffectsManager","getType","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","createFilter","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","cp","clipId","cpGroup","renderableEffectsManager","SVGEffects","addShapeToModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","lcEnum","ljEnum","searchProcessedElement","addProcessedElement","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","timeRemapped","setElements","getElements","destroyElements","pr","volumeValue","FootageInterface","getFootageData","textContainer","buildTextContents","textArray","textContents","currentTextContent","tSpan","usesGlyphs","cachedSpansLength","tElement","justify","textBox","bbox","renderedLetter","textSpan","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","lc","lj","ml","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","colorBlack","colorWhite","opacity","dimensions","sigmaX","sigmaY","edgeMode","initialize","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","table","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","ef","filters","CVBaseElement","CVMaskElement","hasMasks","stroke","currentRender","sWidth","fValue","CVEffects","HBaseElement","shapesContainer","currentBBox","textPaths","isMasked","pe","_prevMat","HEffects","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","newLength","currentSavedOp","createElements","globalCompositeOperation","hideElement","showElement","forceRealStack","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","drawImage","moveTo","lineTo","bezierCurveTo","transformHelper","dashResetter","preTransforms","co","wi","do","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","lastFill","lastStroke","lastStrokeW","checkBlendMode","tg","transformedElementStyle","matrixValue","addEffects","backgroundColor","_createBaseContainerElements","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","right","yMax","bottom","tempBoundingBox","p3","b2ac","calculateF","calculateBoundingBox","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","Image","imageElem","perspectiveStyle","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","animationManager","registeredAnimations","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","animation","isPaused","subtractPlayingCount","registerAnimation","AnimationItem","setupAnimation","setData","addPlayingCount","activate","nowTime","elapsedTime","advanceTime","loadAnimation","setParams","setSpeed","setDirection","togglePause","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","getElementsByTagName","resize","goToAndStop","isFrame","freeze","unfreeze","getRegisteredAnimations","animations","currentRawFrame","frameMult","playSpeed","playDirection","playCount","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","animType","autoloadSegments","initialSegment","fileName","trigger","wrapperAttributes","attributes","getNamedItem","prerender","completeData","loadNextSegment","shift","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","updaFrameModifier","waitForFontsLoaded","triggerConfigError","gotoFrame","setSubframe","triggerRenderFrameError","setCurrentRawFrameValue","getMarkerData","markerName","marker","numValue","frameModifier","goToAndPlay","playSegments","nextValue","_isComplete","checkSegments","adjustSegment","setSegment","pendingFrame","forceFlag","resetSegments","onDestroy","getPath","getDuration","onError","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","arr2","normalize","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","property","needsVelocity","_needsRandom","elemType","$bm_transform","effect","thisProperty","valueAtTime","frameDuration","displayStartTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","numKeys","active","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","frames","fps","timeToFrames","seedRandom","seedrandom","randSeed","posterizeTime","framesPerSecond","executeExpression","_value","frameExpressionId","expressionHelpers","searchExpressions","getSpeedAtTime","_cachingAtTime","getStaticValueAtTime","setGroupProperty","propertyGroup","durationFlag","cycleDuration","firstKeyFrame","lastKeyFrame","initV","endV","current","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","skewAxis","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","propertyIndex","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","propertyGetShapeProp","trims","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","ShapePathInterface","view","interfaceFunction","_propertyGroup","propertyGroupFactory","PropertyInterface","defineProperties","_name","mn","parentPropertyGroup","propertyName","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","interfaces","numProperties","transformInterface","transformInterfaceFactory","cix","contentsInterfaceFactory","np","ExpressionPropertyInterface","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","_prevValue","_sourceText","_thisLayerFunction","sourceText","stringValue","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","anchorPointDescriptor","TransformExpressionInterface","anchor_point","startTime","MaskManagerInterface","effects","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","pixelAspect","numLayers","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","compositions","_thisProjectFunction","createGroupInterface","groupInterface","createValueInterface","enabled","en","expressionProperty","effectsData","MaskInterface","_mask","_data","_masksInterfaces","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","defaultGetter","UnidimensionalPropertyInterface","arrValue","MultidimensionalPropertyInterface","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","effectItem","GroupEffect","propertyGetTextProp","TextExpressionSelectorPropFactory","eff","lottie","setLocationHref","setSubframeRendering","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","variable","vars","queryString","pair","decodeURIComponent","__getFactory","version","scripts","myScript","Fragment","StrictMode","Profiler","Suspense","iterator","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","refs","updater","E","isReactComponent","forceUpdate","F","isPureReactComponent","G","H","__self","__source","J","_owner","N","escape","O","done","Q","_status","_result","then","default","R","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","transition","ReactCurrentOwner","IsSomeRendererActing","Children","toArray","only","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","lazy","_payload","_init","useCallback","useDebugValue","useImperativeHandle","useLayoutEffect","useMemo","useReducer","aa","ba","ca","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","xlinkHref","ra","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","stack","Oa","Pa","prepareStackTrace","Reflect","construct","Qa","Ra","Sa","Ta","nodeName","Va","_valueTracker","enumerable","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","ownerDocument","eb","db","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeType","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","rb","sb","tb","setProperty","ub","menuitem","area","br","embed","hr","keygen","link","meta","param","track","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","dc","ec","gc","hc","ic","jc","kc","mc","nc","oc","pc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","hydrate","containerInfo","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","dd","unstable_UserBlockingPriority","ed","fd","gd","uc","jd","kd","ld","nd","od","keyCode","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","pseudoElement","Jd","clipboardData","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","16","17","18","19","20","27","33","34","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","Od","Alt","Control","Meta","Shift","Pd","Rd","locale","which","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Zd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","date","datetime","email","month","range","tel","week","oe","qe","se","te","ue","ve","we","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","nextSibling","Me","contains","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","selectionStart","selectionEnd","anchorNode","defaultView","getSelection","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","instance","$e","af","bf","cf","df","passive","Nb","ff","parentWindow","hf","je","ke","jf","lf","mf","autoFocus","nf","__html","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","implementation","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","documentElement","tagName","gh","ih","memoizedProps","revealOrder","jh","kh","mh","nh","oh","pendingProps","ph","qh","rh","uh","_workInProgressVersionPrimary","vh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","queue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","fi","gi","ii","ji","ki","li","mi","baseLanes","oi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","isBackwards","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","onclick","createTextNode","V","Hi","Ii","W","Ji","Ki","Li","Mi","Ni","Oi","WeakMap","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","WeakSet","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","focus","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","extend","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","uk","hk","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","performance","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","encodeChunk","output","copyProps","SafeBuffer","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","runClearTimeout","Item","nextTick","env","argv","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","__webpack_amd_options__","fl","collectObject","acc","stdlib","foreign","heap","inputLength","jumpTable","readUInt16","readUInt32","INT_P","octet","UINT_P_8","UINT_P_16","UINT_P_32","UINT_P_64","INT_N","UINT_N_8","UINT_N_16","UINT_N_32","UINT_N_64","step","BYTE_STRING_8","BYTE_STRING_16","BYTE_STRING_32","BYTE_STRING_64","BYTE_STRING_BREAK","UTF8_STRING_8","UTF8_STRING_16","UTF8_STRING_32","UTF8_STRING_64","UTF8_STRING_BREAK","ARRAY_8","ARRAY_16","ARRAY_32","ARRAY_64","ARRAY_BREAK","MAP_8","MAP_16","MAP_32","MAP_64","MAP_BREAK","TAG_KNOWN","TAG_BIGNUM_POS","TAG_BIGNUM_NEG","TAG_FRAC","TAG_BIGNUM_FLOAT","TAG_UNASSIGNED","TAG_BASE64_URL","TAG_BASE64","TAG_BASE16","TAG_MORE_1","TAG_MORE_2","TAG_MORE_4","TAG_MORE_8","SIMPLE_UNASSIGNED","SIMPLE_FALSE","SIMPLE_TRUE","SIMPLE_NULL","SIMPLE_UNDEFINED","SIMPLE_BYTE","SIMPLE_FLOAT_HALF","SIMPLE_FLOAT_SINGLE","SIMPLE_FLOAT_DOUBLE","protocolMap","defaultProtocol","urlParsed","HALF","FLOAT","DOUBLE","MAXINT_BN","BUF_NAN","BUF_INF_NEG","BUF_INF_POS","streaming","stream","onData","semanticTypes","_pushUrl","_pushBigNumber","addTypes","genTypes","addSemanticType","old","resultMethod","resultLength","pushWrite","_pushUInt8","_pushUInt16BE","_pushUInt32BE","_pushDoubleBE","_pushNaN","_pushInfinity","_pushFloat","mt","orig","_pushIntNum","_pushNumber","_pushString","_pushBoolean","_pushUndefined","_pushArray","_pushDate","_pushBuffer","_pushNoFilter","_pushRegexp","_pushSet","_pushBigint","dec","slide","_pushMap","_pushRawMap","_pushObject","sort","toType","encoder","jsx","jsxs","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","replaceClassName","origClass","classToRemove","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","enter","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","mounting","performEnter","performExit","appearing","_ref2","nodeRef","ReactDOM","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","_this$props","childProps","TransitionGroupContext","removeClass","classes","classList","remove","baseVal","CSSTransition","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","classNames","isStringClassNames","baseClassName","doneClassName","phase","hasClass","_addClass","_this$appliedClasses$","getChildMapping","mapFn","mapper","getNextChildMapping","prevChildMapping","nextChildMapping","prev","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","TransitionGroup","handleExited","ReferenceError","_assertThisInitialized","contextValue","firstRender","mounted","currentChildMapping","childFactory"],"mappings":";8FAGEA,EAAOC,QAAUC,EAAQ,K,6BCAzBF,EAAOC,QAAUC,EAAQ,K,8BCH3B,YAUA,IAAIC,EAASD,EAAQ,IACjBE,EAAUF,EAAQ,IAClBG,EAAUH,EAAQ,IAmDtB,SAASI,IACP,OAAOC,EAAOC,oBACV,WACA,WAGN,SAASC,EAAcC,EAAMC,GAC3B,GAAIL,IAAeK,EACjB,MAAM,IAAIC,WAAW,8BAcvB,OAZIL,EAAOC,qBAETE,EAAO,IAAIG,WAAWF,IACjBG,UAAYP,EAAOQ,WAGX,OAATL,IACFA,EAAO,IAAIH,EAAOI,IAEpBD,EAAKC,OAASA,GAGTD,EAaT,SAASH,EAAQS,EAAKC,EAAkBN,GACtC,IAAKJ,EAAOC,uBAAyBU,gBAAgBX,GACnD,OAAO,IAAIA,EAAOS,EAAKC,EAAkBN,GAI3C,GAAmB,kBAARK,EAAkB,CAC3B,GAAgC,kBAArBC,EACT,MAAM,IAAIE,MACR,qEAGJ,OAAOC,EAAYF,KAAMF,GAE3B,OAAOK,EAAKH,KAAMF,EAAKC,EAAkBN,GAW3C,SAASU,EAAMX,EAAMY,EAAOL,EAAkBN,GAC5C,GAAqB,kBAAVW,EACT,MAAM,IAAIC,UAAU,yCAGtB,MAA2B,qBAAhBC,aAA+BF,aAAiBE,YA6H7D,SAA0Bd,EAAMe,EAAOC,EAAYf,GAGjD,GAFAc,EAAME,WAEFD,EAAa,GAAKD,EAAME,WAAaD,EACvC,MAAM,IAAId,WAAW,6BAGvB,GAAIa,EAAME,WAAaD,GAAcf,GAAU,GAC7C,MAAM,IAAIC,WAAW,6BAIrBa,OADiBG,IAAfF,QAAuCE,IAAXjB,EACtB,IAAIE,WAAWY,QACHG,IAAXjB,EACD,IAAIE,WAAWY,EAAOC,GAEtB,IAAIb,WAAWY,EAAOC,EAAYf,GAGxCJ,EAAOC,qBAETE,EAAOe,GACFX,UAAYP,EAAOQ,UAGxBL,EAAOmB,EAAcnB,EAAMe,GAE7B,OAAOf,EAvJEoB,CAAgBpB,EAAMY,EAAOL,EAAkBN,GAGnC,kBAAVW,EAwFb,SAAqBZ,EAAMqB,EAAQC,GACT,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKzB,EAAO0B,WAAWD,GACrB,MAAM,IAAIT,UAAU,8CAGtB,IAAIZ,EAAwC,EAA/BgB,EAAWI,EAAQC,GAG5BE,GAFJxB,EAAOD,EAAaC,EAAMC,IAERwB,MAAMJ,EAAQC,GAE5BE,IAAWvB,IAIbD,EAAOA,EAAK0B,MAAM,EAAGF,IAGvB,OAAOxB,EA5GE2B,CAAW3B,EAAMY,EAAOL,GAsJnC,SAAqBP,EAAM4B,GACzB,GAAI/B,EAAOgC,SAASD,GAAM,CACxB,IAAIE,EAA4B,EAAtBC,EAAQH,EAAI3B,QAGtB,OAAoB,KAFpBD,EAAOD,EAAaC,EAAM8B,IAEjB7B,QAIT2B,EAAII,KAAKhC,EAAM,EAAG,EAAG8B,GAHZ9B,EAOX,GAAI4B,EAAK,CACP,GAA4B,qBAAhBd,aACRc,EAAIK,kBAAkBnB,aAAgB,WAAYc,EACpD,MAA0B,kBAAfA,EAAI3B,SA+8CLiC,EA/8CkCN,EAAI3B,UAg9CrCiC,EA/8CFnC,EAAaC,EAAM,GAErBmB,EAAcnB,EAAM4B,GAG7B,GAAiB,WAAbA,EAAIO,MAAqBxC,EAAQiC,EAAIQ,MACvC,OAAOjB,EAAcnB,EAAM4B,EAAIQ,MAw8CrC,IAAgBF,EAp8Cd,MAAM,IAAIrB,UAAU,sFA9KbwB,CAAWrC,EAAMY,GA4B1B,SAAS0B,EAAYC,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAI1B,UAAU,oCACf,GAAI0B,EAAO,EAChB,MAAM,IAAIrC,WAAW,wCA4BzB,SAASQ,EAAaV,EAAMuC,GAG1B,GAFAD,EAAWC,GACXvC,EAAOD,EAAaC,EAAMuC,EAAO,EAAI,EAAoB,EAAhBR,EAAQQ,KAC5C1C,EAAOC,oBACV,IAAK,IAAI0C,EAAI,EAAGA,EAAID,IAAQC,EAC1BxC,EAAKwC,GAAK,EAGd,OAAOxC,EAwCT,SAASmB,EAAenB,EAAMe,GAC5B,IAAId,EAASc,EAAMd,OAAS,EAAI,EAA4B,EAAxB8B,EAAQhB,EAAMd,QAClDD,EAAOD,EAAaC,EAAMC,GAC1B,IAAK,IAAIuC,EAAI,EAAGA,EAAIvC,EAAQuC,GAAK,EAC/BxC,EAAKwC,GAAgB,IAAXzB,EAAMyB,GAElB,OAAOxC,EA+DT,SAAS+B,EAAS9B,GAGhB,GAAIA,GAAUL,IACZ,MAAM,IAAIM,WAAW,0DACaN,IAAa6C,SAAS,IAAM,UAEhE,OAAgB,EAATxC,EAsFT,SAASgB,EAAYI,EAAQC,GAC3B,GAAIzB,EAAOgC,SAASR,GAClB,OAAOA,EAAOpB,OAEhB,GAA2B,qBAAhBa,aAA6D,oBAAvBA,YAAY4B,SACxD5B,YAAY4B,OAAOrB,IAAWA,aAAkBP,aACnD,OAAOO,EAAOJ,WAEM,kBAAXI,IACTA,EAAS,GAAKA,GAGhB,IAAIS,EAAMT,EAAOpB,OACjB,GAAY,IAAR6B,EAAW,OAAO,EAItB,IADA,IAAIa,GAAc,IAEhB,OAAQrB,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOQ,EACT,IAAK,OACL,IAAK,QACL,UAAKZ,EACH,OAAO0B,EAAYvB,GAAQpB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN6B,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOe,EAAcxB,GAAQpB,OAC/B,QACE,GAAI0C,EAAa,OAAOC,EAAYvB,GAAQpB,OAC5CqB,GAAY,GAAKA,GAAUwB,cAC3BH,GAAc,GAMtB,SAASI,EAAczB,EAAU0B,EAAOC,GACtC,IAAIN,GAAc,EAclB,SALczB,IAAV8B,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQxC,KAAKP,OACf,MAAO,GAOT,SAJYiB,IAAR+B,GAAqBA,EAAMzC,KAAKP,UAClCgD,EAAMzC,KAAKP,QAGTgD,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFK1B,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAO4B,EAAS1C,KAAMwC,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOE,EAAU3C,KAAMwC,EAAOC,GAEhC,IAAK,QACH,OAAOG,EAAW5C,KAAMwC,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOI,EAAY7C,KAAMwC,EAAOC,GAElC,IAAK,SACH,OAAOK,EAAY9C,KAAMwC,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,EAAa/C,KAAMwC,EAAOC,GAEnC,QACE,GAAIN,EAAa,MAAM,IAAI9B,UAAU,qBAAuBS,GAC5DA,GAAYA,EAAW,IAAIwB,cAC3BH,GAAc,GAStB,SAASa,EAAMC,EAAGC,EAAGC,GACnB,IAAInB,EAAIiB,EAAEC,GACVD,EAAEC,GAAKD,EAAEE,GACTF,EAAEE,GAAKnB,EAmIT,SAASoB,EAAsB3B,EAAQC,EAAKlB,EAAYM,EAAUuC,GAEhE,GAAsB,IAAlB5B,EAAOhC,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfe,GACTM,EAAWN,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV8C,MAAM9C,KAERA,EAAa6C,EAAM,EAAK5B,EAAOhC,OAAS,GAItCe,EAAa,IAAGA,EAAaiB,EAAOhC,OAASe,GAC7CA,GAAciB,EAAOhC,OAAQ,CAC/B,GAAI4D,EAAK,OAAQ,EACZ7C,EAAaiB,EAAOhC,OAAS,OAC7B,GAAIe,EAAa,EAAG,CACzB,IAAI6C,EACC,OAAQ,EADJ7C,EAAa,EAUxB,GALmB,kBAARkB,IACTA,EAAMrC,EAAOc,KAAKuB,EAAKZ,IAIrBzB,EAAOgC,SAASK,GAElB,OAAmB,IAAfA,EAAIjC,QACE,EAEH8D,EAAa9B,EAAQC,EAAKlB,EAAYM,EAAUuC,GAClD,GAAmB,kBAAR3B,EAEhB,OADAA,GAAY,IACRrC,EAAOC,qBACiC,oBAAjCK,WAAWE,UAAU2D,QAC1BH,EACK1D,WAAWE,UAAU2D,QAAQC,KAAKhC,EAAQC,EAAKlB,GAE/Cb,WAAWE,UAAU6D,YAAYD,KAAKhC,EAAQC,EAAKlB,GAGvD+C,EAAa9B,EAAQ,CAAEC,GAAOlB,EAAYM,EAAUuC,GAG7D,MAAM,IAAIhD,UAAU,wCAGtB,SAASkD,EAAcI,EAAKjC,EAAKlB,EAAYM,EAAUuC,GACrD,IA0BIrB,EA1BA4B,EAAY,EACZC,EAAYF,EAAIlE,OAChBqE,EAAYpC,EAAIjC,OAEpB,QAAiBiB,IAAbI,IAEe,UADjBA,EAAWiD,OAAOjD,GAAUwB,gBACY,UAAbxB,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI6C,EAAIlE,OAAS,GAAKiC,EAAIjC,OAAS,EACjC,OAAQ,EAEVmE,EAAY,EACZC,GAAa,EACbC,GAAa,EACbtD,GAAc,EAIlB,SAASwD,EAAMC,EAAKjC,GAClB,OAAkB,IAAd4B,EACKK,EAAIjC,GAEJiC,EAAIC,aAAalC,EAAI4B,GAKhC,GAAIP,EAAK,CACP,IAAIc,GAAc,EAClB,IAAKnC,EAAIxB,EAAYwB,EAAI6B,EAAW7B,IAClC,GAAIgC,EAAKL,EAAK3B,KAAOgC,EAAKtC,GAAqB,IAAhByC,EAAoB,EAAInC,EAAImC,IAEzD,IADoB,IAAhBA,IAAmBA,EAAanC,GAChCA,EAAImC,EAAa,IAAML,EAAW,OAAOK,EAAaP,OAEtC,IAAhBO,IAAmBnC,GAAKA,EAAImC,GAChCA,GAAc,OAKlB,IADI3D,EAAasD,EAAYD,IAAWrD,EAAaqD,EAAYC,GAC5D9B,EAAIxB,EAAYwB,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIoC,GAAQ,EACHC,EAAI,EAAGA,EAAIP,EAAWO,IAC7B,GAAIL,EAAKL,EAAK3B,EAAIqC,KAAOL,EAAKtC,EAAK2C,GAAI,CACrCD,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOpC,EAItB,OAAQ,EAeV,SAASsC,EAAUL,EAAKpD,EAAQ0D,EAAQ9E,GACtC8E,EAASC,OAAOD,IAAW,EAC3B,IAAIE,EAAYR,EAAIxE,OAAS8E,EACxB9E,GAGHA,EAAS+E,OAAO/E,IACHgF,IACXhF,EAASgF,GAJXhF,EAASgF,EASX,IAAIC,EAAS7D,EAAOpB,OACpB,GAAIiF,EAAS,IAAM,EAAG,MAAM,IAAIrE,UAAU,sBAEtCZ,EAASiF,EAAS,IACpBjF,EAASiF,EAAS,GAEpB,IAAK,IAAI1C,EAAI,EAAGA,EAAIvC,IAAUuC,EAAG,CAC/B,IAAI2C,EAASC,SAAS/D,EAAOgE,OAAW,EAAJ7C,EAAO,GAAI,IAC/C,GAAIsB,MAAMqB,GAAS,OAAO3C,EAC1BiC,EAAIM,EAASvC,GAAK2C,EAEpB,OAAO3C,EAGT,SAAS8C,EAAWb,EAAKpD,EAAQ0D,EAAQ9E,GACvC,OAAOsF,EAAW3C,EAAYvB,EAAQoD,EAAIxE,OAAS8E,GAASN,EAAKM,EAAQ9E,GAG3E,SAASuF,EAAYf,EAAKpD,EAAQ0D,EAAQ9E,GACxC,OAAOsF,EAq6BT,SAAuBE,GAErB,IADA,IAAIC,EAAY,GACPlD,EAAI,EAAGA,EAAIiD,EAAIxF,SAAUuC,EAEhCkD,EAAUC,KAAyB,IAApBF,EAAIG,WAAWpD,IAEhC,OAAOkD,EA36BWG,CAAaxE,GAASoD,EAAKM,EAAQ9E,GAGvD,SAAS6F,EAAarB,EAAKpD,EAAQ0D,EAAQ9E,GACzC,OAAOuF,EAAWf,EAAKpD,EAAQ0D,EAAQ9E,GAGzC,SAAS8F,EAAatB,EAAKpD,EAAQ0D,EAAQ9E,GACzC,OAAOsF,EAAW1C,EAAcxB,GAASoD,EAAKM,EAAQ9E,GAGxD,SAAS+F,EAAWvB,EAAKpD,EAAQ0D,EAAQ9E,GACvC,OAAOsF,EAk6BT,SAAyBE,EAAKQ,GAG5B,IAFA,IAAIC,EAAGC,EAAIC,EACPV,EAAY,GACPlD,EAAI,EAAGA,EAAIiD,EAAIxF,WACjBgG,GAAS,GAAK,KADazD,EAIhC2D,GADAD,EAAIT,EAAIG,WAAWpD,KACT,EACV4D,EAAKF,EAAI,IACTR,EAAUC,KAAKS,GACfV,EAAUC,KAAKQ,GAGjB,OAAOT,EA/6BWW,CAAehF,EAAQoD,EAAIxE,OAAS8E,GAASN,EAAKM,EAAQ9E,GAkF9E,SAASqD,EAAamB,EAAKzB,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQwB,EAAIxE,OACtBR,EAAO6G,cAAc7B,GAErBhF,EAAO6G,cAAc7B,EAAI/C,MAAMsB,EAAOC,IAIjD,SAASE,EAAWsB,EAAKzB,EAAOC,GAC9BA,EAAMsD,KAAKC,IAAI/B,EAAIxE,OAAQgD,GAI3B,IAHA,IAAIwD,EAAM,GAENjE,EAAIQ,EACDR,EAAIS,GAAK,CACd,IAQMyD,EAAYC,EAAWC,EAAYC,EARrCC,EAAYrC,EAAIjC,GAChBuE,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAItE,EAAIwE,GAAoB/D,EAG1B,OAAQ+D,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,OAAV,KADlBJ,EAAajC,EAAIjC,EAAI,OAEnBqE,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAajC,EAAIjC,EAAI,GACrBmE,EAAYlC,EAAIjC,EAAI,GACQ,OAAV,IAAbkE,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAajC,EAAIjC,EAAI,GACrBmE,EAAYlC,EAAIjC,EAAI,GACpBoE,EAAanC,EAAIjC,EAAI,GACO,OAAV,IAAbkE,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbN,EAAId,KAAKoB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBN,EAAId,KAAKoB,GACTvE,GAAKwE,EAGP,OAQF,SAAgCC,GAC9B,IAAInF,EAAMmF,EAAWhH,OACrB,GAAI6B,GAAOoF,EACT,OAAO3C,OAAO4C,aAAaC,MAAM7C,OAAQ0C,GAI3C,IAAIR,EAAM,GACNjE,EAAI,EACR,KAAOA,EAAIV,GACT2E,GAAOlC,OAAO4C,aAAaC,MACzB7C,OACA0C,EAAWvF,MAAMc,EAAGA,GAAK0E,IAG7B,OAAOT,EAvBAY,CAAsBZ,GA98B/BlH,EAAQM,OAASA,EACjBN,EAAQ+H,WAoTR,SAAqBrH,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOJ,EAAO0H,OAAOtH,IAvTvBV,EAAQiI,kBAAoB,GA0B5B3H,EAAOC,yBAAqDoB,IAA/BuG,EAAO3H,oBAChC2H,EAAO3H,oBAQX,WACE,IACE,IAAIqE,EAAM,IAAIhE,WAAW,GAEzB,OADAgE,EAAI/D,UAAY,CAACA,UAAWD,WAAWE,UAAWqH,IAAK,WAAc,OAAO,KACvD,KAAdvD,EAAIuD,OACiB,oBAAjBvD,EAAIwD,UACuB,IAAlCxD,EAAIwD,SAAS,EAAG,GAAG1G,WACvB,MAAO2G,GACP,OAAO,GAfPC,GAKJtI,EAAQK,WAAaA,IAkErBC,EAAOiI,SAAW,KAGlBjI,EAAOkI,SAAW,SAAU5D,GAE1B,OADAA,EAAI/D,UAAYP,EAAOQ,UAChB8D,GA2BTtE,EAAOc,KAAO,SAAUC,EAAOL,EAAkBN,GAC/C,OAAOU,EAAK,KAAMC,EAAOL,EAAkBN,IAGzCJ,EAAOC,sBACTD,EAAOQ,UAAUD,UAAYD,WAAWE,UACxCR,EAAOO,UAAYD,WACG,qBAAX6H,QAA0BA,OAAOC,SACxCpI,EAAOmI,OAAOC,WAAapI,GAE7BqI,OAAOC,eAAetI,EAAQmI,OAAOC,QAAS,CAC5CrH,MAAO,KACPwH,cAAc,KAiCpBvI,EAAO0H,MAAQ,SAAUhF,EAAM8F,EAAM/G,GACnC,OArBF,SAAgBtB,EAAMuC,EAAM8F,EAAM/G,GAEhC,OADAgB,EAAWC,GACPA,GAAQ,EACHxC,EAAaC,EAAMuC,QAEfrB,IAATmH,EAIyB,kBAAb/G,EACVvB,EAAaC,EAAMuC,GAAM8F,KAAKA,EAAM/G,GACpCvB,EAAaC,EAAMuC,GAAM8F,KAAKA,GAE7BtI,EAAaC,EAAMuC,GAQnBgF,CAAM,KAAMhF,EAAM8F,EAAM/G,IAiBjCzB,EAAOa,YAAc,SAAU6B,GAC7B,OAAO7B,EAAY,KAAM6B,IAK3B1C,EAAOyI,gBAAkB,SAAU/F,GACjC,OAAO7B,EAAY,KAAM6B,IAiH3B1C,EAAOgC,SAAW,SAAmB4B,GACnC,QAAe,MAALA,IAAaA,EAAE8E,YAG3B1I,EAAO2I,QAAU,SAAkBC,EAAGhF,GACpC,IAAK5D,EAAOgC,SAAS4G,KAAO5I,EAAOgC,SAAS4B,GAC1C,MAAM,IAAI5C,UAAU,6BAGtB,GAAI4H,IAAMhF,EAAG,OAAO,EAKpB,IAHA,IAAIiF,EAAID,EAAExI,OACN0I,EAAIlF,EAAExD,OAEDuC,EAAI,EAAGV,EAAMyE,KAAKC,IAAIkC,EAAGC,GAAInG,EAAIV,IAAOU,EAC/C,GAAIiG,EAAEjG,KAAOiB,EAAEjB,GAAI,CACjBkG,EAAID,EAAEjG,GACNmG,EAAIlF,EAAEjB,GACN,MAIJ,OAAIkG,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGT7I,EAAO0B,WAAa,SAAqBD,GACvC,OAAQiD,OAAOjD,GAAUwB,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbjD,EAAO+I,OAAS,SAAiBC,EAAM5I,GACrC,IAAKN,EAAQkJ,GACX,MAAM,IAAIhI,UAAU,+CAGtB,GAAoB,IAAhBgI,EAAK5I,OACP,OAAOJ,EAAO0H,MAAM,GAGtB,IAAI/E,EACJ,QAAetB,IAAXjB,EAEF,IADAA,EAAS,EACJuC,EAAI,EAAGA,EAAIqG,EAAK5I,SAAUuC,EAC7BvC,GAAU4I,EAAKrG,GAAGvC,OAItB,IAAIgC,EAASpC,EAAOa,YAAYT,GAC5B6I,EAAM,EACV,IAAKtG,EAAI,EAAGA,EAAIqG,EAAK5I,SAAUuC,EAAG,CAChC,IAAIiC,EAAMoE,EAAKrG,GACf,IAAK3C,EAAOgC,SAAS4C,GACnB,MAAM,IAAI5D,UAAU,+CAEtB4D,EAAIzC,KAAKC,EAAQ6G,GACjBA,GAAOrE,EAAIxE,OAEb,OAAOgC,GA8CTpC,EAAOoB,WAAaA,EA0EpBpB,EAAOQ,UAAUkI,WAAY,EAQ7B1I,EAAOQ,UAAU0I,OAAS,WACxB,IAAIjH,EAAMtB,KAAKP,OACf,GAAI6B,EAAM,IAAM,EACd,MAAM,IAAI5B,WAAW,6CAEvB,IAAK,IAAIsC,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BgB,EAAKhD,KAAMgC,EAAGA,EAAI,GAEpB,OAAOhC,MAGTX,EAAOQ,UAAU2I,OAAS,WACxB,IAAIlH,EAAMtB,KAAKP,OACf,GAAI6B,EAAM,IAAM,EACd,MAAM,IAAI5B,WAAW,6CAEvB,IAAK,IAAIsC,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BgB,EAAKhD,KAAMgC,EAAGA,EAAI,GAClBgB,EAAKhD,KAAMgC,EAAI,EAAGA,EAAI,GAExB,OAAOhC,MAGTX,EAAOQ,UAAU4I,OAAS,WACxB,IAAInH,EAAMtB,KAAKP,OACf,GAAI6B,EAAM,IAAM,EACd,MAAM,IAAI5B,WAAW,6CAEvB,IAAK,IAAIsC,EAAI,EAAGA,EAAIV,EAAKU,GAAK,EAC5BgB,EAAKhD,KAAMgC,EAAGA,EAAI,GAClBgB,EAAKhD,KAAMgC,EAAI,EAAGA,EAAI,GACtBgB,EAAKhD,KAAMgC,EAAI,EAAGA,EAAI,GACtBgB,EAAKhD,KAAMgC,EAAI,EAAGA,EAAI,GAExB,OAAOhC,MAGTX,EAAOQ,UAAUoC,SAAW,WAC1B,IAAIxC,EAAuB,EAAdO,KAAKP,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBiJ,UAAUjJ,OAAqBkD,EAAU3C,KAAM,EAAGP,GAC/C8C,EAAaqE,MAAM5G,KAAM0I,YAGlCrJ,EAAOQ,UAAU8I,OAAS,SAAiB1F,GACzC,IAAK5D,EAAOgC,SAAS4B,GAAI,MAAM,IAAI5C,UAAU,6BAC7C,OAAIL,OAASiD,GACsB,IAA5B5D,EAAO2I,QAAQhI,KAAMiD,IAG9B5D,EAAOQ,UAAU+I,QAAU,WACzB,IAAI3D,EAAM,GACN4D,EAAM9J,EAAQiI,kBAKlB,OAJIhH,KAAKP,OAAS,IAChBwF,EAAMjF,KAAKiC,SAAS,MAAO,EAAG4G,GAAKC,MAAM,SAASC,KAAK,KACnD/I,KAAKP,OAASoJ,IAAK5D,GAAO,UAEzB,WAAaA,EAAM,KAG5B5F,EAAOQ,UAAUmI,QAAU,SAAkBgB,EAAQxG,EAAOC,EAAKwG,EAAWC,GAC1E,IAAK7J,EAAOgC,SAAS2H,GACnB,MAAM,IAAI3I,UAAU,6BAgBtB,QAbcK,IAAV8B,IACFA,EAAQ,QAEE9B,IAAR+B,IACFA,EAAMuG,EAASA,EAAOvJ,OAAS,QAEfiB,IAAduI,IACFA,EAAY,QAEEvI,IAAZwI,IACFA,EAAUlJ,KAAKP,QAGb+C,EAAQ,GAAKC,EAAMuG,EAAOvJ,QAAUwJ,EAAY,GAAKC,EAAUlJ,KAAKP,OACtE,MAAM,IAAIC,WAAW,sBAGvB,GAAIuJ,GAAaC,GAAW1G,GAASC,EACnC,OAAO,EAET,GAAIwG,GAAaC,EACf,OAAQ,EAEV,GAAI1G,GAASC,EACX,OAAO,EAQT,GAAIzC,OAASgJ,EAAQ,OAAO,EAS5B,IAPA,IAAId,GAJJgB,KAAa,IADbD,KAAe,GAMXd,GAPJ1F,KAAS,IADTD,KAAW,GASPlB,EAAMyE,KAAKC,IAAIkC,EAAGC,GAElBgB,EAAWnJ,KAAKkB,MAAM+H,EAAWC,GACjCE,EAAaJ,EAAO9H,MAAMsB,EAAOC,GAE5BT,EAAI,EAAGA,EAAIV,IAAOU,EACzB,GAAImH,EAASnH,KAAOoH,EAAWpH,GAAI,CACjCkG,EAAIiB,EAASnH,GACbmG,EAAIiB,EAAWpH,GACf,MAIJ,OAAIkG,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA6HT7I,EAAOQ,UAAUwJ,SAAW,SAAmB3H,EAAKlB,EAAYM,GAC9D,OAAoD,IAA7Cd,KAAKwD,QAAQ9B,EAAKlB,EAAYM,IAGvCzB,EAAOQ,UAAU2D,QAAU,SAAkB9B,EAAKlB,EAAYM,GAC5D,OAAOsC,EAAqBpD,KAAM0B,EAAKlB,EAAYM,GAAU,IAG/DzB,EAAOQ,UAAU6D,YAAc,SAAsBhC,EAAKlB,EAAYM,GACpE,OAAOsC,EAAqBpD,KAAM0B,EAAKlB,EAAYM,GAAU,IAkD/DzB,EAAOQ,UAAUoB,MAAQ,SAAgBJ,EAAQ0D,EAAQ9E,EAAQqB,GAE/D,QAAeJ,IAAX6D,EACFzD,EAAW,OACXrB,EAASO,KAAKP,OACd8E,EAAS,OAEJ,QAAe7D,IAAXjB,GAA0C,kBAAX8E,EACxCzD,EAAWyD,EACX9E,EAASO,KAAKP,OACd8E,EAAS,MAEJ,KAAI+E,SAAS/E,GAWlB,MAAM,IAAItE,MACR,2EAXFsE,GAAkB,EACd+E,SAAS7J,IACXA,GAAkB,OACDiB,IAAbI,IAAwBA,EAAW,UAEvCA,EAAWrB,EACXA,OAASiB,GASb,IAAI+D,EAAYzE,KAAKP,OAAS8E,EAG9B,SAFe7D,IAAXjB,GAAwBA,EAASgF,KAAWhF,EAASgF,GAEpD5D,EAAOpB,OAAS,IAAMA,EAAS,GAAK8E,EAAS,IAAOA,EAASvE,KAAKP,OACrE,MAAM,IAAIC,WAAW,0CAGlBoB,IAAUA,EAAW,QAG1B,IADA,IAAIqB,GAAc,IAEhB,OAAQrB,GACN,IAAK,MACH,OAAOwD,EAAStE,KAAMa,EAAQ0D,EAAQ9E,GAExC,IAAK,OACL,IAAK,QACH,OAAOqF,EAAU9E,KAAMa,EAAQ0D,EAAQ9E,GAEzC,IAAK,QACH,OAAOuF,EAAWhF,KAAMa,EAAQ0D,EAAQ9E,GAE1C,IAAK,SACL,IAAK,SACH,OAAO6F,EAAYtF,KAAMa,EAAQ0D,EAAQ9E,GAE3C,IAAK,SAEH,OAAO8F,EAAYvF,KAAMa,EAAQ0D,EAAQ9E,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO+F,EAAUxF,KAAMa,EAAQ0D,EAAQ9E,GAEzC,QACE,GAAI0C,EAAa,MAAM,IAAI9B,UAAU,qBAAuBS,GAC5DA,GAAY,GAAKA,GAAUwB,cAC3BH,GAAc,IAKtB9C,EAAOQ,UAAU0J,OAAS,WACxB,MAAO,CACL5H,KAAM,SACNC,KAAM4H,MAAM3J,UAAUqB,MAAMuC,KAAKzD,KAAKyJ,MAAQzJ,KAAM,KAwFxD,IAAI0G,EAAuB,KAoB3B,SAAS9D,EAAYqB,EAAKzB,EAAOC,GAC/B,IAAIiH,EAAM,GACVjH,EAAMsD,KAAKC,IAAI/B,EAAIxE,OAAQgD,GAE3B,IAAK,IAAIT,EAAIQ,EAAOR,EAAIS,IAAOT,EAC7B0H,GAAO3F,OAAO4C,aAAsB,IAAT1C,EAAIjC,IAEjC,OAAO0H,EAGT,SAAS7G,EAAaoB,EAAKzB,EAAOC,GAChC,IAAIiH,EAAM,GACVjH,EAAMsD,KAAKC,IAAI/B,EAAIxE,OAAQgD,GAE3B,IAAK,IAAIT,EAAIQ,EAAOR,EAAIS,IAAOT,EAC7B0H,GAAO3F,OAAO4C,aAAa1C,EAAIjC,IAEjC,OAAO0H,EAGT,SAAShH,EAAUuB,EAAKzB,EAAOC,GAC7B,IAAInB,EAAM2C,EAAIxE,SAET+C,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMnB,KAAKmB,EAAMnB,GAGxC,IADA,IAAIqI,EAAM,GACD3H,EAAIQ,EAAOR,EAAIS,IAAOT,EAC7B2H,GAAOC,EAAM3F,EAAIjC,IAEnB,OAAO2H,EAGT,SAAS5G,EAAckB,EAAKzB,EAAOC,GAGjC,IAFA,IAAIoH,EAAQ5F,EAAI/C,MAAMsB,EAAOC,GACzBwD,EAAM,GACDjE,EAAI,EAAGA,EAAI6H,EAAMpK,OAAQuC,GAAK,EACrCiE,GAAOlC,OAAO4C,aAAakD,EAAM7H,GAAoB,IAAf6H,EAAM7H,EAAI,IAElD,OAAOiE,EA0CT,SAAS6D,EAAavF,EAAQwF,EAAKtK,GACjC,GAAK8E,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI7E,WAAW,sBAC3D,GAAI6E,EAASwF,EAAMtK,EAAQ,MAAM,IAAIC,WAAW,yCA+JlD,SAASsK,EAAU/F,EAAK7D,EAAOmE,EAAQwF,EAAKlB,EAAK7C,GAC/C,IAAK3G,EAAOgC,SAAS4C,GAAM,MAAM,IAAI5D,UAAU,+CAC/C,GAAID,EAAQyI,GAAOzI,EAAQ4F,EAAK,MAAM,IAAItG,WAAW,qCACrD,GAAI6E,EAASwF,EAAM9F,EAAIxE,OAAQ,MAAM,IAAIC,WAAW,sBAkDtD,SAASuK,EAAmBhG,EAAK7D,EAAOmE,EAAQ2F,GAC1C9J,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAI4B,EAAI,EAAGqC,EAAI0B,KAAKC,IAAI/B,EAAIxE,OAAS8E,EAAQ,GAAIvC,EAAIqC,IAAKrC,EAC7DiC,EAAIM,EAASvC,IAAM5B,EAAS,KAAS,GAAK8J,EAAelI,EAAI,EAAIA,MAClC,GAA5BkI,EAAelI,EAAI,EAAIA,GA8B9B,SAASmI,EAAmBlG,EAAK7D,EAAOmE,EAAQ2F,GAC1C9J,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAI4B,EAAI,EAAGqC,EAAI0B,KAAKC,IAAI/B,EAAIxE,OAAS8E,EAAQ,GAAIvC,EAAIqC,IAAKrC,EAC7DiC,EAAIM,EAASvC,GAAM5B,IAAuC,GAA5B8J,EAAelI,EAAI,EAAIA,GAAU,IAmJnE,SAASoI,EAAcnG,EAAK7D,EAAOmE,EAAQwF,EAAKlB,EAAK7C,GACnD,GAAIzB,EAASwF,EAAM9F,EAAIxE,OAAQ,MAAM,IAAIC,WAAW,sBACpD,GAAI6E,EAAS,EAAG,MAAM,IAAI7E,WAAW,sBAGvC,SAAS2K,EAAYpG,EAAK7D,EAAOmE,EAAQ2F,EAAcI,GAKrD,OAJKA,GACHF,EAAanG,EAAK7D,EAAOmE,EAAQ,GAEnCrF,EAAQ+B,MAAMgD,EAAK7D,EAAOmE,EAAQ2F,EAAc,GAAI,GAC7C3F,EAAS,EAWlB,SAASgG,EAAatG,EAAK7D,EAAOmE,EAAQ2F,EAAcI,GAKtD,OAJKA,GACHF,EAAanG,EAAK7D,EAAOmE,EAAQ,GAEnCrF,EAAQ+B,MAAMgD,EAAK7D,EAAOmE,EAAQ2F,EAAc,GAAI,GAC7C3F,EAAS,EA/clBlF,EAAOQ,UAAUqB,MAAQ,SAAgBsB,EAAOC,GAC9C,IAoBI+H,EApBAlJ,EAAMtB,KAAKP,OAqBf,IApBA+C,IAAUA,GAGE,GACVA,GAASlB,GACG,IAAGkB,EAAQ,GACdA,EAAQlB,IACjBkB,EAAQlB,IANVmB,OAAc/B,IAAR+B,EAAoBnB,IAAQmB,GASxB,GACRA,GAAOnB,GACG,IAAGmB,EAAM,GACVA,EAAMnB,IACfmB,EAAMnB,GAGJmB,EAAMD,IAAOC,EAAMD,GAGnBnD,EAAOC,qBACTkL,EAASxK,KAAKmH,SAAS3E,EAAOC,IACvB7C,UAAYP,EAAOQ,cACrB,CACL,IAAI4K,EAAWhI,EAAMD,EACrBgI,EAAS,IAAInL,EAAOoL,OAAU/J,GAC9B,IAAK,IAAIsB,EAAI,EAAGA,EAAIyI,IAAYzI,EAC9BwI,EAAOxI,GAAKhC,KAAKgC,EAAIQ,GAIzB,OAAOgI,GAWTnL,EAAOQ,UAAU6K,WAAa,SAAqBnG,EAAQ9D,EAAY6J,GACrE/F,GAAkB,EAClB9D,GAA0B,EACrB6J,GAAUR,EAAYvF,EAAQ9D,EAAYT,KAAKP,QAKpD,IAHA,IAAIiC,EAAM1B,KAAKuE,GACXoG,EAAM,EACN3I,EAAI,IACCA,EAAIvB,IAAekK,GAAO,MACjCjJ,GAAO1B,KAAKuE,EAASvC,GAAK2I,EAG5B,OAAOjJ,GAGTrC,EAAOQ,UAAU+K,WAAa,SAAqBrG,EAAQ9D,EAAY6J,GACrE/F,GAAkB,EAClB9D,GAA0B,EACrB6J,GACHR,EAAYvF,EAAQ9D,EAAYT,KAAKP,QAKvC,IAFA,IAAIiC,EAAM1B,KAAKuE,IAAW9D,GACtBkK,EAAM,EACHlK,EAAa,IAAMkK,GAAO,MAC/BjJ,GAAO1B,KAAKuE,IAAW9D,GAAckK,EAGvC,OAAOjJ,GAGTrC,EAAOQ,UAAUgL,UAAY,SAAoBtG,EAAQ+F,GAEvD,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCO,KAAKuE,IAGdlF,EAAOQ,UAAUiL,aAAe,SAAuBvG,EAAQ+F,GAE7D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCO,KAAKuE,GAAWvE,KAAKuE,EAAS,IAAM,GAG7ClF,EAAOQ,UAAUqE,aAAe,SAAuBK,EAAQ+F,GAE7D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACnCO,KAAKuE,IAAW,EAAKvE,KAAKuE,EAAS,IAG7ClF,EAAOQ,UAAUkL,aAAe,SAAuBxG,EAAQ+F,GAG7D,OAFKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,SAElCO,KAAKuE,GACTvE,KAAKuE,EAAS,IAAM,EACpBvE,KAAKuE,EAAS,IAAM,IACD,SAAnBvE,KAAKuE,EAAS,IAGrBlF,EAAOQ,UAAUmL,aAAe,SAAuBzG,EAAQ+F,GAG7D,OAFKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QAEpB,SAAfO,KAAKuE,IACTvE,KAAKuE,EAAS,IAAM,GACrBvE,KAAKuE,EAAS,IAAM,EACrBvE,KAAKuE,EAAS,KAGlBlF,EAAOQ,UAAUoL,UAAY,SAAoB1G,EAAQ9D,EAAY6J,GACnE/F,GAAkB,EAClB9D,GAA0B,EACrB6J,GAAUR,EAAYvF,EAAQ9D,EAAYT,KAAKP,QAKpD,IAHA,IAAIiC,EAAM1B,KAAKuE,GACXoG,EAAM,EACN3I,EAAI,IACCA,EAAIvB,IAAekK,GAAO,MACjCjJ,GAAO1B,KAAKuE,EAASvC,GAAK2I,EAM5B,OAFIjJ,IAFJiJ,GAAO,OAESjJ,GAAOqE,KAAKmF,IAAI,EAAG,EAAIzK,IAEhCiB,GAGTrC,EAAOQ,UAAUsL,UAAY,SAAoB5G,EAAQ9D,EAAY6J,GACnE/F,GAAkB,EAClB9D,GAA0B,EACrB6J,GAAUR,EAAYvF,EAAQ9D,EAAYT,KAAKP,QAKpD,IAHA,IAAIuC,EAAIvB,EACJkK,EAAM,EACNjJ,EAAM1B,KAAKuE,IAAWvC,GACnBA,EAAI,IAAM2I,GAAO,MACtBjJ,GAAO1B,KAAKuE,IAAWvC,GAAK2I,EAM9B,OAFIjJ,IAFJiJ,GAAO,OAESjJ,GAAOqE,KAAKmF,IAAI,EAAG,EAAIzK,IAEhCiB,GAGTrC,EAAOQ,UAAUuL,SAAW,SAAmB7G,EAAQ+F,GAErD,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACtB,IAAfO,KAAKuE,IAC0B,GAA5B,IAAOvE,KAAKuE,GAAU,GADKvE,KAAKuE,IAI3ClF,EAAOQ,UAAUwL,YAAc,SAAsB9G,EAAQ+F,GACtDA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QAC3C,IAAIiC,EAAM1B,KAAKuE,GAAWvE,KAAKuE,EAAS,IAAM,EAC9C,OAAc,MAAN7C,EAAsB,WAANA,EAAmBA,GAG7CrC,EAAOQ,UAAUyL,YAAc,SAAsB/G,EAAQ+F,GACtDA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QAC3C,IAAIiC,EAAM1B,KAAKuE,EAAS,GAAMvE,KAAKuE,IAAW,EAC9C,OAAc,MAAN7C,EAAsB,WAANA,EAAmBA,GAG7CrC,EAAOQ,UAAU0L,YAAc,SAAsBhH,EAAQ+F,GAG3D,OAFKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QAEnCO,KAAKuE,GACVvE,KAAKuE,EAAS,IAAM,EACpBvE,KAAKuE,EAAS,IAAM,GACpBvE,KAAKuE,EAAS,IAAM,IAGzBlF,EAAOQ,UAAU2L,YAAc,SAAsBjH,EAAQ+F,GAG3D,OAFKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QAEnCO,KAAKuE,IAAW,GACrBvE,KAAKuE,EAAS,IAAM,GACpBvE,KAAKuE,EAAS,IAAM,EACpBvE,KAAKuE,EAAS,IAGnBlF,EAAOQ,UAAU4L,YAAc,SAAsBlH,EAAQ+F,GAE3D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCP,EAAQ8E,KAAKhE,KAAMuE,GAAQ,EAAM,GAAI,IAG9ClF,EAAOQ,UAAU6L,YAAc,SAAsBnH,EAAQ+F,GAE3D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCP,EAAQ8E,KAAKhE,KAAMuE,GAAQ,EAAO,GAAI,IAG/ClF,EAAOQ,UAAU8L,aAAe,SAAuBpH,EAAQ+F,GAE7D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCP,EAAQ8E,KAAKhE,KAAMuE,GAAQ,EAAM,GAAI,IAG9ClF,EAAOQ,UAAU+L,aAAe,SAAuBrH,EAAQ+F,GAE7D,OADKA,GAAUR,EAAYvF,EAAQ,EAAGvE,KAAKP,QACpCP,EAAQ8E,KAAKhE,KAAMuE,GAAQ,EAAO,GAAI,IAS/ClF,EAAOQ,UAAUgM,YAAc,SAAsBzL,EAAOmE,EAAQ9D,EAAY6J,IAC9ElK,GAASA,EACTmE,GAAkB,EAClB9D,GAA0B,EACrB6J,IAEHN,EAAShK,KAAMI,EAAOmE,EAAQ9D,EADfsF,KAAKmF,IAAI,EAAG,EAAIzK,GAAc,EACO,GAGtD,IAAIkK,EAAM,EACN3I,EAAI,EAER,IADAhC,KAAKuE,GAAkB,IAARnE,IACN4B,EAAIvB,IAAekK,GAAO,MACjC3K,KAAKuE,EAASvC,GAAM5B,EAAQuK,EAAO,IAGrC,OAAOpG,EAAS9D,GAGlBpB,EAAOQ,UAAUiM,YAAc,SAAsB1L,EAAOmE,EAAQ9D,EAAY6J,IAC9ElK,GAASA,EACTmE,GAAkB,EAClB9D,GAA0B,EACrB6J,IAEHN,EAAShK,KAAMI,EAAOmE,EAAQ9D,EADfsF,KAAKmF,IAAI,EAAG,EAAIzK,GAAc,EACO,GAGtD,IAAIuB,EAAIvB,EAAa,EACjBkK,EAAM,EAEV,IADA3K,KAAKuE,EAASvC,GAAa,IAAR5B,IACV4B,GAAK,IAAM2I,GAAO,MACzB3K,KAAKuE,EAASvC,GAAM5B,EAAQuK,EAAO,IAGrC,OAAOpG,EAAS9D,GAGlBpB,EAAOQ,UAAUkM,WAAa,SAAqB3L,EAAOmE,EAAQ+F,GAMhE,OALAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,IAAM,GACjDlF,EAAOC,sBAAqBc,EAAQ2F,KAAKiG,MAAM5L,IACpDJ,KAAKuE,GAAmB,IAARnE,EACTmE,EAAS,GAWlBlF,EAAOQ,UAAUoM,cAAgB,SAAwB7L,EAAOmE,EAAQ+F,GAUtE,OATAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,MAAQ,GACpDlF,EAAOC,qBACTU,KAAKuE,GAAmB,IAARnE,EAChBJ,KAAKuE,EAAS,GAAMnE,IAAU,GAE9B6J,EAAkBjK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAUqM,cAAgB,SAAwB9L,EAAOmE,EAAQ+F,GAUtE,OATAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,MAAQ,GACpDlF,EAAOC,qBACTU,KAAKuE,GAAWnE,IAAU,EAC1BJ,KAAKuE,EAAS,GAAc,IAARnE,GAEpB6J,EAAkBjK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAUlBlF,EAAOQ,UAAUsM,cAAgB,SAAwB/L,EAAOmE,EAAQ+F,GAYtE,OAXAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,WAAY,GACxDlF,EAAOC,qBACTU,KAAKuE,EAAS,GAAMnE,IAAU,GAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,GAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,EAC9BJ,KAAKuE,GAAmB,IAARnE,GAEhB+J,EAAkBnK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAUuM,cAAgB,SAAwBhM,EAAOmE,EAAQ+F,GAYtE,OAXAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,WAAY,GACxDlF,EAAOC,qBACTU,KAAKuE,GAAWnE,IAAU,GAC1BJ,KAAKuE,EAAS,GAAMnE,IAAU,GAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,EAC9BJ,KAAKuE,EAAS,GAAc,IAARnE,GAEpB+J,EAAkBnK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAUwM,WAAa,SAAqBjM,EAAOmE,EAAQ9D,EAAY6J,GAG5E,GAFAlK,GAASA,EACTmE,GAAkB,GACb+F,EAAU,CACb,IAAIgC,EAAQvG,KAAKmF,IAAI,EAAG,EAAIzK,EAAa,GAEzCuJ,EAAShK,KAAMI,EAAOmE,EAAQ9D,EAAY6L,EAAQ,GAAIA,GAGxD,IAAItK,EAAI,EACJ2I,EAAM,EACN4B,EAAM,EAEV,IADAvM,KAAKuE,GAAkB,IAARnE,IACN4B,EAAIvB,IAAekK,GAAO,MAC7BvK,EAAQ,GAAa,IAARmM,GAAsC,IAAzBvM,KAAKuE,EAASvC,EAAI,KAC9CuK,EAAM,GAERvM,KAAKuE,EAASvC,IAAO5B,EAAQuK,GAAQ,GAAK4B,EAAM,IAGlD,OAAOhI,EAAS9D,GAGlBpB,EAAOQ,UAAU2M,WAAa,SAAqBpM,EAAOmE,EAAQ9D,EAAY6J,GAG5E,GAFAlK,GAASA,EACTmE,GAAkB,GACb+F,EAAU,CACb,IAAIgC,EAAQvG,KAAKmF,IAAI,EAAG,EAAIzK,EAAa,GAEzCuJ,EAAShK,KAAMI,EAAOmE,EAAQ9D,EAAY6L,EAAQ,GAAIA,GAGxD,IAAItK,EAAIvB,EAAa,EACjBkK,EAAM,EACN4B,EAAM,EAEV,IADAvM,KAAKuE,EAASvC,GAAa,IAAR5B,IACV4B,GAAK,IAAM2I,GAAO,MACrBvK,EAAQ,GAAa,IAARmM,GAAsC,IAAzBvM,KAAKuE,EAASvC,EAAI,KAC9CuK,EAAM,GAERvM,KAAKuE,EAASvC,IAAO5B,EAAQuK,GAAQ,GAAK4B,EAAM,IAGlD,OAAOhI,EAAS9D,GAGlBpB,EAAOQ,UAAU4M,UAAY,SAAoBrM,EAAOmE,EAAQ+F,GAO9D,OANAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,KAAO,KAClDlF,EAAOC,sBAAqBc,EAAQ2F,KAAKiG,MAAM5L,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCJ,KAAKuE,GAAmB,IAARnE,EACTmE,EAAS,GAGlBlF,EAAOQ,UAAU6M,aAAe,SAAuBtM,EAAOmE,EAAQ+F,GAUpE,OATAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,OAAS,OACrDlF,EAAOC,qBACTU,KAAKuE,GAAmB,IAARnE,EAChBJ,KAAKuE,EAAS,GAAMnE,IAAU,GAE9B6J,EAAkBjK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAU8M,aAAe,SAAuBvM,EAAOmE,EAAQ+F,GAUpE,OATAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,OAAS,OACrDlF,EAAOC,qBACTU,KAAKuE,GAAWnE,IAAU,EAC1BJ,KAAKuE,EAAS,GAAc,IAARnE,GAEpB6J,EAAkBjK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAU+M,aAAe,SAAuBxM,EAAOmE,EAAQ+F,GAYpE,OAXAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,YAAa,YACzDlF,EAAOC,qBACTU,KAAKuE,GAAmB,IAARnE,EAChBJ,KAAKuE,EAAS,GAAMnE,IAAU,EAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,GAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,IAE9B+J,EAAkBnK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAGlBlF,EAAOQ,UAAUgN,aAAe,SAAuBzM,EAAOmE,EAAQ+F,GAapE,OAZAlK,GAASA,EACTmE,GAAkB,EACb+F,GAAUN,EAAShK,KAAMI,EAAOmE,EAAQ,EAAG,YAAa,YACzDnE,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxCf,EAAOC,qBACTU,KAAKuE,GAAWnE,IAAU,GAC1BJ,KAAKuE,EAAS,GAAMnE,IAAU,GAC9BJ,KAAKuE,EAAS,GAAMnE,IAAU,EAC9BJ,KAAKuE,EAAS,GAAc,IAARnE,GAEpB+J,EAAkBnK,KAAMI,EAAOmE,GAAQ,GAElCA,EAAS,GAgBlBlF,EAAOQ,UAAUiN,aAAe,SAAuB1M,EAAOmE,EAAQ+F,GACpE,OAAOD,EAAWrK,KAAMI,EAAOmE,GAAQ,EAAM+F,IAG/CjL,EAAOQ,UAAUkN,aAAe,SAAuB3M,EAAOmE,EAAQ+F,GACpE,OAAOD,EAAWrK,KAAMI,EAAOmE,GAAQ,EAAO+F,IAWhDjL,EAAOQ,UAAUmN,cAAgB,SAAwB5M,EAAOmE,EAAQ+F,GACtE,OAAOC,EAAYvK,KAAMI,EAAOmE,GAAQ,EAAM+F,IAGhDjL,EAAOQ,UAAUoN,cAAgB,SAAwB7M,EAAOmE,EAAQ+F,GACtE,OAAOC,EAAYvK,KAAMI,EAAOmE,GAAQ,EAAO+F,IAIjDjL,EAAOQ,UAAU2B,KAAO,SAAewH,EAAQkE,EAAa1K,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMzC,KAAKP,QAC9ByN,GAAelE,EAAOvJ,SAAQyN,EAAclE,EAAOvJ,QAClDyN,IAAaA,EAAc,GAC5BzK,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBwG,EAAOvJ,QAAgC,IAAhBO,KAAKP,OAAc,OAAO,EAGrD,GAAIyN,EAAc,EAChB,MAAM,IAAIxN,WAAW,6BAEvB,GAAI8C,EAAQ,GAAKA,GAASxC,KAAKP,OAAQ,MAAM,IAAIC,WAAW,6BAC5D,GAAI+C,EAAM,EAAG,MAAM,IAAI/C,WAAW,2BAG9B+C,EAAMzC,KAAKP,SAAQgD,EAAMzC,KAAKP,QAC9BuJ,EAAOvJ,OAASyN,EAAczK,EAAMD,IACtCC,EAAMuG,EAAOvJ,OAASyN,EAAc1K,GAGtC,IACIR,EADAV,EAAMmB,EAAMD,EAGhB,GAAIxC,OAASgJ,GAAUxG,EAAQ0K,GAAeA,EAAczK,EAE1D,IAAKT,EAAIV,EAAM,EAAGU,GAAK,IAAKA,EAC1BgH,EAAOhH,EAAIkL,GAAelN,KAAKgC,EAAIQ,QAEhC,GAAIlB,EAAM,MAASjC,EAAOC,oBAE/B,IAAK0C,EAAI,EAAGA,EAAIV,IAAOU,EACrBgH,EAAOhH,EAAIkL,GAAelN,KAAKgC,EAAIQ,QAGrC7C,WAAWE,UAAUsN,IAAI1J,KACvBuF,EACAhJ,KAAKmH,SAAS3E,EAAOA,EAAQlB,GAC7B4L,GAIJ,OAAO5L,GAOTjC,EAAOQ,UAAUgI,KAAO,SAAenG,EAAKc,EAAOC,EAAK3B,GAEtD,GAAmB,kBAARY,EAAkB,CAS3B,GARqB,kBAAVc,GACT1B,EAAW0B,EACXA,EAAQ,EACRC,EAAMzC,KAAKP,QACa,kBAARgD,IAChB3B,EAAW2B,EACXA,EAAMzC,KAAKP,QAEM,IAAfiC,EAAIjC,OAAc,CACpB,IAAI2N,EAAO1L,EAAI0D,WAAW,GACtBgI,EAAO,MACT1L,EAAM0L,GAGV,QAAiB1M,IAAbI,GAA8C,kBAAbA,EACnC,MAAM,IAAIT,UAAU,6BAEtB,GAAwB,kBAAbS,IAA0BzB,EAAO0B,WAAWD,GACrD,MAAM,IAAIT,UAAU,qBAAuBS,OAErB,kBAARY,IAChBA,GAAY,KAId,GAAIc,EAAQ,GAAKxC,KAAKP,OAAS+C,GAASxC,KAAKP,OAASgD,EACpD,MAAM,IAAI/C,WAAW,sBAGvB,GAAI+C,GAAOD,EACT,OAAOxC,KAQT,IAAIgC,EACJ,GANAQ,KAAkB,EAClBC,OAAc/B,IAAR+B,EAAoBzC,KAAKP,OAASgD,IAAQ,EAE3Cf,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAKM,EAAIQ,EAAOR,EAAIS,IAAOT,EACzBhC,KAAKgC,GAAKN,MAEP,CACL,IAAImI,EAAQxK,EAAOgC,SAASK,GACxBA,EACAU,EAAY,IAAI/C,EAAOqC,EAAKZ,GAAUmB,YACtCX,EAAMuI,EAAMpK,OAChB,IAAKuC,EAAI,EAAGA,EAAIS,EAAMD,IAASR,EAC7BhC,KAAKgC,EAAIQ,GAASqH,EAAM7H,EAAIV,GAIhC,OAAOtB,MAMT,IAAIqN,EAAoB,qBAmBxB,SAASzD,EAAO1G,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEjB,SAAS,IAC7BiB,EAAEjB,SAAS,IAGpB,SAASG,EAAavB,EAAQ4E,GAE5B,IAAIc,EADJd,EAAQA,GAAS6H,IAMjB,IAJA,IAAI7N,EAASoB,EAAOpB,OAChB8N,EAAgB,KAChB1D,EAAQ,GAEH7H,EAAI,EAAGA,EAAIvC,IAAUuC,EAAG,CAI/B,IAHAuE,EAAY1F,EAAOuE,WAAWpD,IAGd,OAAUuE,EAAY,MAAQ,CAE5C,IAAKgH,EAAe,CAElB,GAAIhH,EAAY,MAAQ,EAEjBd,GAAS,IAAM,GAAGoE,EAAM1E,KAAK,IAAM,IAAM,KAC9C,SACK,GAAInD,EAAI,IAAMvC,EAAQ,EAEtBgG,GAAS,IAAM,GAAGoE,EAAM1E,KAAK,IAAM,IAAM,KAC9C,SAIFoI,EAAgBhH,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjBd,GAAS,IAAM,GAAGoE,EAAM1E,KAAK,IAAM,IAAM,KAC9CoI,EAAgBhH,EAChB,SAIFA,EAAkE,OAArDgH,EAAgB,OAAU,GAAKhH,EAAY,YAC/CgH,IAEJ9H,GAAS,IAAM,GAAGoE,EAAM1E,KAAK,IAAM,IAAM,KAMhD,GAHAoI,EAAgB,KAGZhH,EAAY,IAAM,CACpB,IAAKd,GAAS,GAAK,EAAG,MACtBoE,EAAM1E,KAAKoB,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKd,GAAS,GAAK,EAAG,MACtBoE,EAAM1E,KACJoB,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAKd,GAAS,GAAK,EAAG,MACtBoE,EAAM1E,KACJoB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAItG,MAAM,sBARhB,IAAKwF,GAAS,GAAK,EAAG,MACtBoE,EAAM1E,KACJoB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOsD,EA4BT,SAASxH,EAAe4C,GACtB,OAAOhG,EAAOuO,YAhIhB,SAAsBvI,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIwI,KAAaxI,EAAIwI,OAClBxI,EAAIyI,QAAQ,aAAc,IAZ3BC,CAAW1I,GAAKyI,QAAQL,EAAmB,KAEzC5N,OAAS,EAAG,MAAO,GAE3B,KAAOwF,EAAIxF,OAAS,IAAM,GACxBwF,GAAY,IAEd,OAAOA,EAuHmB2I,CAAY3I,IAGxC,SAASF,EAAY8I,EAAKC,EAAKvJ,EAAQ9E,GACrC,IAAK,IAAIuC,EAAI,EAAGA,EAAIvC,KACbuC,EAAIuC,GAAUuJ,EAAIrO,QAAYuC,GAAK6L,EAAIpO,UADhBuC,EAE5B8L,EAAI9L,EAAIuC,GAAUsJ,EAAI7L,GAExB,OAAOA,K,+CC9uDT,8UAGM,SAAU,EAAS,EAAY,GACnC,GAAI,EAAK,OAAO,OAAS,EACvB,MAAM,IAAI,MAAM,4BAEhB,OAAK,EAAK,KAAK,GAQb,SAAU,EAAU,GAKtB,GAJmB,kBAAV,IACL,EAAI,OAAO,IAGb,EAAQ,OAAO,GACb,MAAE,IAAI,MAAM,sCAGlB,MAAM,EAAO,IAAI,IACjB,OAAa,CACX,MAAM,EAAI,OAAO,EAAQ,OAAO,MAEhC,IADA,GAAS,OAAO,QACF,OAAO,GAAI,CACvB,EAAK,MAAM,CAAC,IACZ,MAEA,EAAK,MAAM,CAAK,IAAJ,IAId,OAAK,IAAI,SAAO,EAAK,QAQnB,SAAU,EAAU,GACxB,IAEI,EAFA,EAAS,OAAO,GAChB,EAAQ,OAAO,GAGjB,GACA,EAAO,EAAS,EAAM,GAAG,GACzB,GAAS,OAAc,IAAP,GAAa,UAAY,EACrC,GAAM,OAAO,WACV,GAAQ,KAEf,OAAK,EAQH,SAAU,EAAW,GACJ,kBAAV,IACL,EAAI,OAAO,IAGf,MAAI,EAAQ,EAAQ,OAAO,GACzB,IACE,GAAK,EAAQ,OAAO,IAExB,MAAI,EAAO,IAAI,IACf,OAAW,CACP,MAAE,EAAI,EAAc,GAIxB,GAHI,GAAK,OAAO,KAGP,GAAS,IAAU,OAAO,IAAqB,KAAV,GAAJ,KAC/B,GAAS,IAAU,OAAO,IAAqB,KAAV,GAAJ,GAAkB,CAC1D,EAAK,MAAM,CAAC,IACZ,MAEA,EAAK,MAAM,CAAK,IAAJ,IAIhB,SAAO,EAAc,GACrB,MAAM,EAAQ,EAAM,OAAO,KAC3B,OAES,OAFL,EAEY,OAAO,KAAQ,EAAQ,OAAO,GAE9B,GAGhB,OAAK,IAAI,SAAO,EAAK,QAQnB,SAAU,EAAW,GAEvB,MAAI,EAAW,IAAI,WAAW,EAAK,QACnC,IAAE,EAAM,EACR,KAAK,EAAM,EAAS,WAAY,IAChC,GAAI,EAAS,GAAO,IAAM,CAExB,GAA+B,KAAV,GAAhB,EAAS,IACZ,OAAO,EAAU,GAEnB,MAIF,MAAI,EAAQ,IAAI,WAAW,EAAS,EAAM,EAAM,IAChD,IAAE,EAAQ,OAAO,GACjB,IAAG,IAAI,EAAI,EAAM,WAAa,EAAG,GAAK,EAAG,IACrC,EAAI,EAAQ,OAAO,KAAQ,OAAO,KAAmB,IAAX,EAAM,IAAa,GAEjE,OAAM,EAAQ,OAAO,GAGnB,SAAU,EAAY,EAAwB,GAChD,GAAE,OAAO,GAAS,OAAO,GACzB,MAAM,IAAI,MAAM,iCAEhB,OAAK,EAAW,EAAO,GAGrB,SAAU,EAAW,EAAwB,GAC/C,EAAM,OAAO,GAEb,MAAI,EAAO,IAAI,IACf,IAAE,EAAI,EACJ,EAAM,OAAO,KACb,EAAM,OAAO,GACb,EAAO,OAAO,EAAQ,GAExB,IADA,EAAG,MAAM,CAAC,MACH,EAAI,GACP,EAAQ,GAAK,IAAQ,OAAO,IAAe,IAAT,IACpC,EAAM,OAAO,IAEf,EAAO,QAAQ,EAAQ,EAAM,GAAO,OAAO,MAC3C,EAAK,MAAM,CAAC,IACZ,GAAO,OAAO,KAGhB,OAAO,IAAI,SAAO,EAAK,QAGnB,SAAU,EAAW,EAAY,GACrC,IAAI,EAAM,OAAO,EAAS,EAAM,GAAG,IAC/B,EAAM,OAAO,GACb,EAAI,EACR,OAAS,EAAI,GAAY,CACvB,GAAO,OAAO,KAEd,GAAY,EADC,OAAO,EAAS,EAAM,GAAG,IAGxC,OAAO,EAGH,SAAU,EAAU,EAAY,GACpC,IAAI,EAAM,EAAW,EAAM,GAC3B,MAAM,EAAM,OAAO,KAAO,OAAO,GAAK,OAAO,EAAa,GAAK,OAAO,IAItE,OAHI,GAAO,IACT,GAAO,EAAM,OAAO,IAEf,I,43FChLM,IAAG+L,UACd,MAAI,EAAc,EAAI,UAClB,EAAc,EAAI,IAAI,EAAI,MAC1B,EAAmB,EAAI,OAAO,CAC9BC,mBAAgB,EAAI,IAAI,EAAI,KAC5BC,kBAAe,EAAI,IAAI,EAAI,OAE/B,OAAK,EAAI,QAAQ,CACbC,wCAAqC,EAAI,KAC3C,CACE,EAAI,OAAO,CAAE,OAAQ,EAAI,IAAI,EAAI,KAAM,SAAU,EAAI,IAAI,MACxD,CACD,EAAI,OAAO,CAAE,YAAa,KAE5B,IAEE,gBAAa,EAAI,KAAK,GAAI,CAAC,EAAI,OAAO,CAAE,YAAa,KAAiB,IACtE,aAAU,EAAI,KAChB,CACE,EAAI,OAAO,CACT,KAAM,EAAI,QAAQ,CAAE,QAAS,EAAI,KAAM,UAAW,EAAI,KAAM,QAAS,EAAI,OACzE,YAAa,EACb,YAAa,EACb,IAAK,EAAI,IAAI,EAAI,SAGrB,GACA,IAEF,eAAgB,EAAI,KAClB,CAAC,EAAI,OAAO,CAAE,YAAa,EAAa,eAAgB,EAAI,aAC5D,GACA,OCFA,SAAU,EAAsB,GACpC,SAAS,EAAU,EAAoB,EAAiB,GACtD,MAAM,EAAQ,EAAK,GACnB,IAAI,EAAsB,IAAU,QAAQ,IAI5C,OAHI,GAA0B,kBAAV,GAAsB,EAAM,cAC9C,EAAsB,IAAU,KAAK,EAAM,cAEtC,CAAE,uBAGX,OAAO,GAAM,YAAsC,EAAqB,6CACnE,GAAM,CACT,WAAY,IAAU,QAAQ,MAC3B,CACD,cAAe,EACf,eAAgB,K,4BClChB,SAAU,EAAa,GACzB,GAAE,UAAU,KAAK,IAAU,qBAAqB,KAAK,GAAQ,CACzD,MAAE,GAAO,EAAM,MAAM,GAAI,GACzB,UAAO,cAAc,IAAQ,GAAO,GAAK,EAAM,GAAK,GACtD,OAAO,EAGX,OAlBF,SAAiBC,GACb,MACI,GADc,IAAI,aACE,OAAO,GAE/B,IAAE,EAAI,EACN,IAAG,MAAM,KAAK,EACd,GAAS,IAAJ,EAAU,GAAK,GAAK,GAE3B,OAAO,EAUA,CAAQ,G,WCajB,MAAM,EAAc,OAEpB,SAAS,EAAoB,EAAU,EAAU,GAC7C,OAAK,EAAG,KAAI,CAAC,EAAG,IAAM,EAAE,EAAG,EAAG,MAMlC,MAAM,EAAJ,cAEQ,WAAkB,GAClB,UAAO,IAAI,IAEV,IAAE,GACL,OAAG,KAAK,KAAK,IAAI,EAAI,MAGpB,IAAO,EAAwB,GACpC,MAAM,EAAM,KAAK,MAAM,OACvB,KAAK,KAAK,IAAI,EAAK,KAAM,GACrB,KAAC,MAAM,KAAK,GAGX,MAAS,EAAuB,GACrC,MAAM,EAAM,KAAK,KAAK,IAAI,EAAI,MACxB,EAAU,KAAK,KAAK,IAAI,GAC1B,QAAQ,IAAR,EACF,MAAM,IAAI,MAAM,0BAA4B,GAE1C,QAAY,IAAZ,EACF,MAAM,IAAI,MAAM,0BAA4B,GAE1C,KAAC,MAAM,GAAO,KAAK,MAAM,GAGzB,KAAC,MAAM,OAAO,EAAS,GAC3B,KAAK,KAAK,OAAO,GAGZ,SACL,MAAM,EAAM,YAAU,KAAK,MAAM,QAC3B,EAAM,SAAO,OAAO,KAAK,OAC/B,OAAO,SAAO,OAAO,CAAC,EAAK,IAGtB,QAAQ,GACb,IAAK,KAAK,KAAK,IAAI,GACjB,MAAM,IAAI,MAAM,0BAA4B,GAE9C,OAAO,YAAW,KAAK,KAAK,IAAI,IAAa,IAI3C,MAAgB,EACb,UAAa,EAAY,GAC9B,MAAM,IAAI,MAAM,mBAEX,eAAkB,EAAqB,GAC5C,OAAO,KAAK,UAAU,EAAG,GAEpB,WAAW,EAAe,GAC/B,OAAO,KAAK,eAAe,EAAG,GAEzB,UAAU,EAAc,GAC7B,OAAO,KAAK,eAAe,EAAG,GAEzB,UAAU,EAAc,GAC7B,OAAO,KAAK,eAAe,EAAG,GAEzB,cAAc,EAAkB,GACrC,OAAO,KAAK,eAAe,EAAG,GAEzB,UAAU,EAAc,GAC7B,OAAO,KAAK,eAAe,EAAG,GAEzB,YAAeC,EAAqB,GACzC,OAAO,KAAK,eAAe,EAAG,GAEzB,SAAS,EAAa,GAC3B,OAAO,KAAK,YAAY,EAAG,GAEtB,SAAS,EAAa,GAC3B,OAAO,KAAK,YAAY,EAAG,GAEtB,WAAW,EAAe,GAC/B,OAAO,KAAK,eAAe,EAAG,GAEzB,cAAc,EAAkB,GACrC,OAAO,KAAK,YAAY,EAAG,GAEtB,cAAc,EAAkB,GACrC,OAAO,KAAK,YAAY,EAAG,GAEtB,eAAe,EAAmB,GACvC,OAAO,KAAK,eAAe,EAAG,GAGzB,eAAkB,EAAqB,GAC5C,OAAO,KAAK,UAAU,EAAG,GAEpB,SAAY,EAAgB,EAAa,GAC9C,OAAO,KAAK,eAAe,EAAG,GAEzB,SAAY,EAAgB,EAAa,GAC1C,OAAG,KAAK,eAAe,EAAG,GAEzB,YAAY,EAAgB,EAA+B,GAChE,OAAO,KAAK,eAAe,EAAG,GAEzB,WAA4B,EAAkB,EAAoB,GACnE,MAAE,EAAgC,EAAW,KAAI,CAAC,EAAI,IAAM,CAAC,IAAI,KAAM,KACvE,OAAG,KAAK,YAAY,EAAG,EAAQ,GAE9B,aAAa,EAAiB,EAA+B,GAClE,OAAO,KAAK,eAAe,EAAG,GAEzB,SAAY,EAAgB,EAAsB,GACnD,OAAG,KAAK,eAAe,EAAI,GAE1B,UAAU,EAAc,GAC7B,OAAO,KAAK,eAAe,EAAG,GAEzB,aAAa,EAAiB,GAC/B,OAAG,KAAK,eAAe,EAAG,IAO5B,MAAgB,EAKb,UACL,OAAO,KAAK,KAGP,cAAc,GACnB,OAAO,KAAK,UAAU,GAIjB,eAAe,GACf,EAAU,IAAI,OACjB,KAAK,oBAAoB,IA6BzB,MAAgB,UAA+B,EAC5C,UAAU,GACf,GAAI,KAAK,OAAS,EAAE,KAClB,MAAM,IAAI,MAAM,mCAAmC,EAAE,qBAAqB,KAAK,QAEjF,OAAO,EAEF,oBAAoB,KAMvB,MAAgB,UAA+B,EAC5C,UAAU,GACX,gBAAa,EAAU,CACnB,QAAK,EAAE,UACb,GAAkB,qBAAP,EACT,MAAM,IAAI,MAAM,yCAElB,OAAO,EAET,MAAM,IAAI,MAAM,mCAAmC,EAAE,qBAAqB,KAAK,QAE1E,WAAW,GAChB,OAAO,EAAU,QAAQ,KAAK,OAS5B,MAAO,UAAmB,EACvB,OAAa,EAAkB,GACpC,OAAO,EAAE,WAAW,KAAM,GAGrB,UAAU,GACX,OAAG,EAGF,cACD,MAAE,IAAI,MAAM,8CAGX,gBACL,MAAM,IAAI,MAAM,kCAGX,aACD,OAAG,aAAU,IAGZ,cACL,MAAM,IAAI,MAAM,oCAGV,WACN,MAAO,SAOL,MAAO,UAAkB,EACtB,OAAa,EAAkB,GACpC,OAAO,EAAE,UAAU,KAAM,GAGpB,UAAU,GACf,MAAoB,mBAAN,EAGT,YAAY,GACjB,MAAM,EAAM,SAAO,MAAM,GAEzB,OADA,EAAI,UAAU,EAAI,EAAI,EAAG,GAClB,EAGF,aACL,OAAO,aAAU,GAGZ,YAAY,EAAS,GACtB,KAAC,UAAU,GACX,MAAE,EAAI,YAAS,EAAG,GAAG,SAAS,OAC9B,GAAM,OAAN,EACF,OAAO,EACF,GAAU,OAAN,EACT,OAAO,EAEP,MAAM,IAAI,MAAM,8BAIZ,WACF,MAAG,QAOL,MAAO,UAAkB,EACtB,OAAa,EAAkB,GACpC,OAAO,EAAE,UAAU,KAAM,GAGpB,UAAU,GACf,OAAa,OAAN,EAGF,cACL,OAAO,SAAO,MAAM,GAGf,aACD,OAAG,aAAU,GAGZ,YAAY,EAAS,GAE1B,OADA,KAAK,UAAU,GACR,KAGD,WACF,MAAG,QAOL,MAAO,UAAsB,EAC1B,OAAa,EAAkB,GACpC,OAAO,EAAE,cAAc,KAAM,GAGxB,UAAU,GACf,OAAO,EAGF,cACL,OAAO,SAAO,MAAM,GAGf,aACL,OAAO,aAAU,IAGZ,YAAY,EAAS,GAI1B,OAHI,EAAE,OAAS,KAAK,MAClB,EAAE,YAAY,EAAG,GAEZ,KAGD,WACN,MAAO,YAIX,SAAS,EAAY,GACjB,OAAiE,IAA5D,SAAO,QAAQ,IAAI,SAAO,EAAI,WAAY,QAAS,GAMtD,MAAO,UAAkB,EACtB,OAAa,EAAkB,GAChC,OAAG,EAAE,UAAU,KAAM,GAGpB,UAAU,GACf,MAAoB,kBAAN,EAGT,YAAY,GACjB,MAAM,EAAM,SAAO,KAAK,EAAG,QACrB,EAAM,YAAU,EAAI,QAC1B,OAAO,SAAO,OAAO,CAAC,EAAK,IAGtB,aACD,OAAG,aAAU,IAGV,YAAU,EAAS,GACtB,KAAC,UAAU,GACX,MAAE,EAAM,YAAU,GAChB,EAAM,YAAS,EAAG,OAAO,IAC/B,IAAK,EAAY,GACf,MAAM,IAAI,MAAM,uBAElB,OAAO,EAAI,SAAS,QAGd,WACF,MAAG,OAGF,cAAc,GACf,MAAG,IAAM,EAAI,KAOf,MAAO,UAAiB,EACrB,OAAa,EAAkB,GACpC,OAAO,EAAE,SAAS,KAAM,GAGnB,UAAU,GAGX,MAAgB,kBAAN,GAAkB,OAAO,UAAU,GAG5C,YAAY,GACb,OAAG,YAAW,GAGb,aACD,OAAG,aAAU,GAGZ,YAAY,EAAS,GAEtB,OADA,KAAC,UAAU,GACR,YAAW,GAGZ,WACF,MAAG,MAGF,cAAc,GACf,OAAG,EAAE,YAOP,MAAO,UAAiB,EACrB,OAAa,EAAkB,GAChC,OAAG,EAAE,SAAS,KAAM,GAGnB,UAAU,GAGf,MAAqB,kBAAN,GAAkB,GAAK,OAAO,IAAQ,OAAO,UAAU,IAAM,GAAK,EAG5E,YAAY,GACjB,OAAO,YAAU,GAGZ,aACL,OAAO,aAAU,GAGZ,YAAY,EAAS,GAEtB,OADJ,KAAK,UAAU,GACR,YAAU,GAGX,WACF,MAAG,MAGF,cAAc,GACf,OAAG,EAAE,YAOP,MAAO,UAAmB,EAC5B,YAAkB,GAElB,GADI,QADc,aAEJ,KAAV,GAA0B,KAAV,EAClB,MAAM,IAAI,MAAM,0BAGb,OAAa,EAAkB,GAChC,OAAG,EAAE,WAAW,KAAM,GAGrB,UAAU,GACX,MAAgB,kBAAN,GAAkB,aAAa,OAGtC,YAAU,GACb,MAAE,EAAM,SAAO,YAAY,KAAK,MAAQ,GAMxC,OALe,KAAf,KAAK,MACD,EAAF,aAAa,EAAG,GAEpB,EAAI,cAAc,EAAG,GAEhB,EAGF,aACL,MAAM,EAAwB,KAAf,KAAK,OAAc,IAAqB,GACvD,OAAO,YAAW,GAGb,YAAY,EAAS,GAC1B,KAAK,UAAU,GACf,MAAM,EAAI,YAAS,EAAG,KAAK,MAAQ,GACnC,OAAmB,KAAf,KAAK,MACA,EAAE,YAAY,GAEd,EAAE,aAAa,GAIlB,WACN,MAAO,QAAU,KAAK,MAGjB,cAAc,GACnB,OAAO,EAAE,YAOP,MAAO,UAAsB,EAC/B,YAAkB,GAClB,QADkB,aAIb,OAAa,EAAkB,GAChC,OAAG,EAAE,cAAc,KAAM,GAGxB,UAAU,GACX,MAAE,EAAM,OAAO,IAAM,OAAO,KAAK,MAAQ,GAAK,QAAQ,GACpD,EAAM,OAAO,IAAM,OAAO,KAAK,MAAQ,GAAK,OAAO,GACrD,GAAa,kBAAN,EACT,OAAO,GAAK,GAAO,GAAK,EACnB,GAAI,OAAO,UAAU,GAAI,CAC9B,MAAM,EAAI,OAAO,GACX,OAAC,GAAK,GAAO,GAAK,EAExB,OAAO,EAIJ,YAAY,GACjB,OAAO,YAAW,EAAG,KAAK,MAAQ,GAG7B,aACL,MAAM,EAAS,KAAK,KAAK,KAAK,OAAS,EACnC,OAAG,aAAY,EAAI,GAGlB,YAAY,EAAS,GACtB,KAAC,UAAU,GACf,MAAM,EAAM,YAAU,EAAG,KAAK,MAAQ,GACtC,OAAI,KAAK,OAAS,GACT,OAAO,GAEP,EAIH,WACF,MAAG,MAAM,KAAK,QAGb,cAAc,GACnB,OAAO,EAAE,YAOP,MAAO,UAAsB,EAC/B,YAA0B,GACtB,QADsB,YAIrB,OAAa,EAAkB,GAChC,OAAG,EAAE,cAAc,KAAM,GAGxB,UAAU,GACf,MAAM,EAAM,OAAO,IAAM,OAAO,KAAK,MACrC,GAAiB,kBAAN,GAAkB,EAAI,OAAO,GACtC,OAAO,EAAI,EACN,GAAI,OAAO,UAAU,IAAM,GAAK,EAAG,CAExC,OADU,OAAO,GACN,EAEX,OAAO,EAIF,YAAU,GACb,OAAG,YAAY,EAAG,KAAK,KAAO,GAG7B,aACL,MAAM,EAAS,KAAK,KAAK,KAAK,MAAQ,EACtC,OAAO,aAAY,EAAI,GAGlB,YAAY,EAAS,GACtB,KAAC,UAAU,GACf,MAAM,EAAM,YAAW,EAAG,KAAK,KAAO,GACtC,OAAI,KAAK,MAAQ,GACR,OAAO,GAEP,EAIH,WACN,MAAO,MAAM,KAAK,OAGb,cAAc,GACnB,OAAO,EAAE,YAQP,MAAO,UAAoB,EAI7B,YAAoB,GAChB,QADgB,aAFd,wBAAoB,EAItB,aAAiB,GAAgC,IAAf,EAAM,OACpC,KAAD,mBAAoB,GAItB,OAAa,EAAkB,GACpC,OAAO,EAAE,SAAS,KAAM,KAAK,MAAO,GAG7B,UAAQ,GACX,OAAG,MAAM,QAAQ,IAAM,EAAE,OAAM,GAAK,KAAK,MAAM,UAAU,KAGtD,YAAU,GACjB,MAAM,EAAM,YAAU,EAAE,QACxB,OAAI,KAAK,kBACA,SAAO,OAAO,CAAC,EAAK,SAAO,KAAK,KAGlC,SAAO,OAAO,CAAC,KAAQ,EAAE,KAAI,GAAK,KAAK,MAAM,YAAY,OAG3D,oBAAoB,GACrB,KAAC,MAAM,eAAe,GAEtB,MAAE,EAAS,aAAU,IACnB,EAAS,KAAK,MAAM,WAAW,GACrC,EAAU,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,KAGpC,YAAU,EAAS,GACtB,MAAE,EAAM,KAAK,UAAU,GACvB,KAAE,aAAe,GACnB,MAAM,IAAI,MAAM,qBAEd,MAAE,EAAM,OAAO,YAAU,IACzB,QAAK,kBACD,MAAC,IAAI,IAAI,WAAW,EAAE,KAAK,KAG/B,MAAE,EAAY,GACd,IAAC,IAAI,EAAI,EAAG,EAAI,EAAK,IACjB,EAAD,KAAK,KAAK,MAAM,YAAY,EAAG,EAAI,QAEtC,OAAG,EAGD,WACN,MAAO,OAAO,KAAK,MAAM,OAGpB,UACL,MAAO,OAAO,KAAK,MAAM,YAGpB,cAAc,GAEnB,MAAO,QADU,EAAE,KAAI,GAAK,KAAK,MAAM,cAAc,KAC3B,KAAK,MAAQ,KAQrC,MAAO,UAAoB,EAC/B,YAAsB,GACpB,QADoB,aAIf,OAAa,EAAkB,GAChC,OAAG,EAAE,SAAS,KAAM,KAAK,MAAO,GAG/B,UAAU,GACX,OAAG,MAAM,QAAQ,KAAoB,IAAb,EAAE,QAA8B,IAAb,EAAE,QAAgB,KAAK,MAAM,UAAU,EAAE,KAGnF,YAAY,GACb,OAAa,IAAb,EAAE,OACG,SAAO,KAAK,CAAC,IAEb,SAAO,OAAO,CAAC,SAAO,KAAK,CAAC,IAAK,KAAK,MAAM,YAAY,EAAE,MAI9D,oBAAoB,GACzB,KAAK,MAAM,eAAe,GAEtB,MAAE,EAAS,aAAU,IACnB,EAAS,KAAK,MAAM,WAAW,GACjC,EAAM,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,KAGtC,YAAY,EAAS,GACtB,MAAE,EAAM,KAAK,UAAU,GACvB,KAAE,aAAe,GACb,UAAI,MAAM,sBAEd,MAAE,EAAM,YAAS,EAAG,GAAG,SAAS,OAChC,GAAQ,OAAR,EACI,MAAC,GACF,GAAY,OAAR,EACH,MAAC,CAAC,KAAK,MAAM,YAAY,EAAG,EAAI,QAEtC,MAAM,IAAI,MAAM,uBAIZ,WACN,MAAO,OAAO,KAAK,MAAM,OAGpB,UACL,MAAO,OAAO,KAAK,MAAM,YAGpB,cAAc,GACnB,OAAiB,IAAb,EAAE,OACG,OAEA,OAAO,KAAK,MAAM,cAAc,EAAE,OASzC,MAAO,UAAoB,EAG7B,YAAU,EAA+B,IACzC,QACA,KAAK,QAAU,OAAO,QAAQ,GAAQ,MAAK,CAAC,EAAG,IAAM,EAAa,EAAE,IAAM,EAAa,EAAE,MAGlF,OAAW,EAAkB,GAChC,OAAG,EAAE,YAAY,KAAM,KAAK,QAAS,GAGlC,aACH,MAAE,EAAc,GAChB,IAAC,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,MAAO,EAAK,GAAQ,KAAK,QAAQ,GACjC,GAAI,IAAQ,IAAI,KACd,OAAO,KAET,EAAI,KAAK,GAEP,OAAG,EAGF,UAAU,GACf,MACe,kBAAN,GACP,KAAK,QAAQ,OAAM,EAAE,EAAG,MACtB,IAAK,EAAE,eAAe,GACpB,MAAM,IAAI,MAAM,0BAA0B,OAE5C,OAAO,EAAE,UAAU,EAAE,OAKlB,YAAU,GACb,MAAE,EAAS,KAAK,QAAQ,KAAI,EAAE,KAAS,EAAE,KACvC,EAAO,EAAQ,KAAK,QAAS,GAAQ,EAAC,CAAG,GAAI,IAAM,EAAE,YAAY,KACnE,OAAG,SAAO,OAAO,GAGhB,oBAAoB,GACzB,KAAK,QAAQ,SAAQ,EAAE,EAAG,KAAW,EAAM,eAAe,KACtD,MAAE,EAAS,aAAU,IACnB,EAAM,YAAU,KAAK,QAAQ,QAC7B,EAAS,KAAK,QAAQ,KAAI,EAAE,EAAK,KACrC,SAAO,OAAO,CAAC,YAAU,EAAa,IAAO,EAAM,WAAW,OAGhE,EAAE,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,EAAK,SAAO,OAAO,MAG/C,YAAU,EAASA,GACtB,MAAE,EAAS,KAAK,UAAU,GAC1B,KAAE,aAAkB,GAChB,UAAI,MAAM,qBAEd,MAAE,EAAyB,GAC3B,MAAM,EACN,IAAC,MAAO,EAAM,KAAS,EAAO,QAAS,CACnC,GAAF,GAAO,KAAK,QAAQ,QAAU,EAAa,KAAK,QAAQ,GAAK,MAAQ,EAAa,GAAO,CAE3F,EAAK,YAAY,EAAG,GACpB,SAEF,MAAO,EAAW,GAAc,KAAK,QAAQ,GAC7C,EAAE,GAAa,EAAW,YAAY,EAAG,GACzC,IAEF,GAAI,EAAM,KAAK,QAAQ,OACrB,MAAM,IAAI,MAAM,qBAAuB,KAAK,QAAQ,GAAK,IAEvD,OAAG,EAGD,WAEF,MAAG,WADQ,KAAK,QAAQ,KAAI,EAAE,EAAK,KAAW,EAAM,IAAM,EAAM,OAC3C,KAAK,SAGzB,UAED,MAAG,WADQ,KAAK,QAAQ,KAAI,EAAE,EAAK,KAAW,EAAM,IAAM,EAAM,YAC3C,KAAK,SAGzB,cAAc,GACnB,MAAM,EAAS,KAAK,QAAQ,KAAI,EAAE,KAAS,EAAE,KAEzC,MAAG,WADQ,EAAQ,KAAK,QAAS,GAAQ,EAAE,EAAG,GAAI,IAAM,EAAI,IAAM,EAAE,cAAc,KAC7D,KAAK,UAQ5B,MAAO,UAAoC,EAG7C,YAAU,GACN,MAAE,EAAyB,GAC3B,EAAQ,SAAQ,CAAC,EAAG,IAAO,EAAE,IAAM,EAAI,KAAO,IAC9C,MAAE,GACN,KAAK,YAAc,EAGZ,OAAW,EAAkB,GAChC,OAAG,EAAE,WAAW,KAAM,KAAK,YAAa,GAGvC,UAAU,GAEf,OACE,MAAM,QAAQ,IACd,EAAE,QAAU,KAAK,QAAQ,QACzB,KAAK,YAAY,OAAM,CAAC,EAAG,IAAM,EAAE,UAAU,EAAE,MAI5C,YAAY,GACb,MAAE,EAAO,EAAQ,KAAK,YAAa,GAAG,CAAC,EAAG,IAAM,EAAE,YAAY,KAC9D,OAAG,SAAO,OAAO,GAGhB,YAAY,EAAS,GAC1B,MAAM,EAAQ,KAAK,UAAU,GAC7B,KAAM,aAAiB,GACrB,MAAM,IAAI,MAAM,oBAElB,GAAI,EAAM,YAAY,OAAS,KAAK,YAAY,OAC9C,MAAM,IAAI,MAAM,kBAElB,MAAM,EAAM,GACZ,IAAK,MAAO,EAAG,KAAa,EAAM,YAAY,UACxC,GAAK,KAAK,YAAY,OAExB,EAAS,YAAY,EAAG,GAExB,EAAI,KAAK,KAAK,YAAY,GAAG,YAAY,EAAG,IAG5C,OAAG,EAGF,UAEL,MAAO,WADQ,KAAK,YAAY,KAAI,GAAS,EAAM,YAC1B,KAAK,SAGzB,cAAc,GAEnB,MAAO,WADQ,EAAQ,KAAK,YAAa,GAAQ,CAAC,EAAG,IAAM,EAAE,cAAc,KAClD,KAAK,UAQ5B,MAAO,UAAqB,EAG9B,YAAU,EAA+B,IACrC,QACJ,KAAK,QAAU,OAAO,QAAQ,GAAQ,MAAK,CAAC,EAAG,IAAM,EAAa,EAAE,IAAM,EAAa,EAAE,MAGpF,OAAa,EAAkB,GACpC,OAAO,EAAE,aAAa,KAAM,KAAK,QAAS,GAGrC,UAAU,GACf,MACe,kBAAN,GACsB,IAA7B,OAAO,QAAQ,GAAG,QAClB,KAAK,QAAQ,OAAM,EAAE,EAAG,MACd,EAAE,eAAe,IAAM,EAAE,UAAU,EAAE,MAK1C,YAAU,GACb,IAAC,IAAI,EAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,IAAK,CAC5C,MAAO,EAAM,GAAQ,KAAK,QAAQ,GAClC,GAAI,EAAE,eAAe,GAAO,CAC1B,MAAM,EAAM,YAAU,GAChB,EAAM,EAAK,YAAY,EAAE,IAE/B,OAAO,SAAO,OAAO,CAAC,EAAK,KAG/B,MAAM,MAAM,wBAA0B,GAGjC,oBAAoB,GACrB,KAAC,QAAQ,SAAQ,EAAC,CAAG,MACvB,EAAK,eAAe,MAElB,MAAE,EAAS,aAAU,IACnB,EAAM,YAAU,KAAK,QAAQ,QAC7B,EAAS,KAAK,QAAQ,KAAI,EAAE,EAAK,KACrC,SAAO,OAAO,CAAC,YAAU,EAAa,IAAO,EAAM,WAAW,OAE5D,EAAM,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,KAAQ,KAG9C,YAAY,EAAS,GACtB,MAAE,EAAU,KAAK,UAAUA,GAC3B,KAAE,aAAmB,GACvB,MAAM,IAAI,MAAM,sBAElB,MAAM,EAAM,OAAO,YAAU,IAC7B,GAAI,GAAO,EAAQ,QAAQ,OACzB,MAAM,MAAM,0BAA4B,GAEtC,MAAG,EAAU,GAAY,EAAQ,QAAQ,GACzC,IAAC,MAAO,EAAK,KAAe,KAAK,QACnC,GAAI,EAAa,KAAc,EAAa,GAAM,CAEhD,MAAO,CAAE,CAAC,GADI,EAAW,YAAY,EAAG,IAIxC,MAAE,IAAI,MAAM,0BAA4B,GAGtC,WAEF,MAAG,YADQ,KAAK,QAAQ,KAAI,EAAE,EAAK,KAAU,EAAM,IAAM,EAAK,OACxC,KAAK,SAG1B,UAIL,MAAO,YAHQ,KAAK,QAAQ,KAC1B,EAAE,EAAK,KAAU,GAAqB,SAAd,EAAK,KAAkB,GAAK,IAAI,EAAK,eAErC,KAAK,SAG1B,cAAc,GACf,IAAC,MAAO,EAAM,KAAS,KAAK,QAC9B,GAAI,EAAE,eAAe,GAAO,CAC1B,MAAM,EAAQ,EAAK,cAAc,EAAE,IACnC,MAAc,SAAV,EACK,YAAY,KAEZ,YAAY,KAAQ,KAI7B,MAAE,IAAI,MAAM,wBAA0B,IAQxC,MAAO,UAA0B,EAArC,c,oBAEQ,SAAM,EAAS,WACf,gBAAsC,EAEvC,OAAa,EAAkB,GAChC,IAAC,KAAK,MACR,MAAM,MAAM,iCAEV,OAAG,EAAE,SAAS,KAAM,KAAK,MAAO,GAG/B,KAAK,GACV,KAAK,MAAQ,EAGR,UACD,OAAG,KAAK,MAGL,UAAQ,GACX,QAAG,KAAK,OAAQ,KAAK,MAAM,UAAU,GAGpC,YAAY,GACjB,IAAK,KAAK,MACR,MAAM,MAAM,iCAEd,OAAO,KAAK,MAAM,YAAY,GAGzB,oBAAoB,GACzB,IAAK,KAAK,MACR,MAAM,MAAM,iCAEd,EAAU,IAAI,KAAM,SAAO,MAAM,IACjC,KAAK,MAAM,eAAe,GAC1B,EAAU,MAAM,KAAM,KAAK,MAAM,MAG5B,YAAY,EAAS,GAC1B,IAAK,KAAK,MACR,MAAM,MAAM,iCAEd,OAAO,KAAK,MAAM,YAAY,EAAG,GAG3B,WACN,MAAO,OAAO,KAAK,MAGd,UACL,IAAK,KAAK,MACR,MAAM,MAAM,iCAEV,MAAG,SAAI,KAAK,QAAQ,KAAK,MAAM,OAG9B,cAAc,GACnB,IAAK,KAAK,MACR,MAAM,MAAM,iCAEd,OAAO,KAAK,MAAM,cAAc,IAIpC,SAAS,EAAkB,GAEvB,GAAQ,OADA,YAAS,EAAG,GAAG,SAAS,OAEhC,MAAM,IAAI,MAAM,2BAElB,MAAM,EAAM,OAAO,YAAU,IACvB,EAAM,YAAS,EAAG,GAAK,SAAS,OAAO,cAC7C,OAAO,IAAY,QAAQ,GAxEZ,WAAW,EA8EtB,MAAO,UAAuB,EAC3B,OAAa,EAAkB,GACpC,OAAO,EAAE,eAAe,KAAM,GAGzB,UAAU,GACf,OAAO,GAAK,EAAE,aAGT,YAAY,GACb,MAAE,EAAM,EAAE,QACR,EAAM,SAAO,KAAK,EAAK,OACvB,EAAM,YAAU,EAAI,QACtB,OAAG,SAAO,OAAO,CAAC,SAAO,KAAK,CAAC,IAAK,EAAK,IAGtC,aACH,OAAG,aAAU,IAGV,YAAU,EAAS,GAEtB,OADA,KAAC,UAAU,GACR,EAAkB,GAGjB,WACJ,MAAG,YAEA,cAAY,GACf,MAAG,GAAG,KAAK,SAAS,EAAE,aAUxB,MAAO,UAAkB,EAQ3B,YAAiB,EAAyB,EAAyB,EAAwB,IACvF,QADa,gBAAyB,gBAAyB,mBAP3C,oBAAC,EAAe,GACpC,KAAM,SAAW,EAAE,OACf,UAAI,MAAM,kBAEd,MAAG,IAAM,EAAM,KAAI,CAAC,EAAG,IAAM,EAAE,cAAc,EAAE,MAAK,KAAK,MAAQ,IAO9D,OAAW,EAAkB,GAChC,OAAG,EAAE,UAAU,KAAM,GAElB,UAAQ,GACX,OACF,MAAM,QAAQ,IAAmB,IAAb,EAAE,QAAgB,EAAE,IAAM,EAAE,GAAG,cAAgC,kBAAT,EAAE,GAIvE,YAAU,GACb,MAAE,EAAM,EAAE,GAAG,QACX,EAAM,SAAO,KAAK,EAAK,OACvB,EAAM,YAAU,EAAI,QACpB,EAAW,SAAO,OAAO,CAAC,SAAO,KAAK,CAAC,IAAK,EAAK,IAEjD,EAAS,SAAO,KAAK,EAAE,GAAI,QAC3B,EAAY,YAAU,EAAO,QAC/B,OAAG,SAAO,OAAO,CAAC,SAAO,KAAK,CAAC,IAAK,EAAU,EAAW,IAGxD,oBAAoB,GACzB,KAAK,SAAS,SAAQ,GAAO,EAAI,eAAe,KAChD,KAAK,SAAS,SAAQ,GAAO,EAAI,eAAe,KAEhD,MAAM,EAAS,aAAU,IACnB,EAAS,YAAU,KAAK,SAAS,QACjC,EAAO,SAAO,OAAO,KAAK,SAAS,KAAI,GAAO,EAAI,WAAW,MAC7D,EAAS,YAAU,KAAK,SAAS,QACjC,EAAO,SAAO,OAAO,KAAK,SAAS,KAAI,GAAO,EAAI,WAAW,MAC7D,EAAS,YAAU,KAAK,YAAY,QACpC,EAAO,SAAO,OAAO,KAAK,YAAY,KAAI,GAAK,KAAK,iBAAiB,MAEvE,EAAF,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,EAAQ,EAAM,EAAQ,EAAM,EAAQ,KAGhE,YAAU,GAEb,GAAM,OADA,YAAS,EAAG,GAAG,SAAS,OAE1B,UAAI,MAAM,oCAEd,MAAE,EAAW,EAAkB,GAE7B,EAAO,OAAO,YAAU,IACxB,EAAM,YAAS,EAAG,GACpB,IAAC,EAAY,GACT,UAAI,MAAM,8BAGd,MAAG,CAAC,EADO,EAAI,SAAS,SAIpB,WAIJ,MAAG,IAHM,KAAK,SAAS,KAAI,GAAO,EAAI,OAAM,KAAK,cACxC,KAAK,SAAS,KAAI,GAAO,EAAI,OAAM,KAAK,SACvC,IAAM,KAAK,YAAY,KAAK,OAInC,eAAa,EAAW,IAC3B,MAAG,SAAS,EAAU,aAAa,IAGhC,UAIH,MAAG,IAHM,KAAK,SAAS,KAAI,GAAO,EAAI,YAAW,KAAK,kBAC7C,KAAK,SAAS,KAAI,GAAO,EAAI,YAAW,KAAK,SAC5C,IAAM,KAAK,YAAY,KAAK,OAIlC,iBAAe,GACnB,GAAQ,UAAR,EACF,OAAO,SAAO,KAAK,CAAC,IACf,GAAY,WAAR,EACH,OAAC,SAAO,KAAK,CAAC,IAEpB,MAAM,IAAI,MAAM,iCAKhB,MAAO,UAAqB,EAE9B,YAAU,GACN,QACA,KAAC,QAAU,OAAO,QAAQ,GAAQ,MAAK,CAAC,EAAG,IAAM,EAAa,EAAE,IAAM,EAAa,EAAE,MAElF,OAAW,EAAkB,GAChC,OAAG,EAAE,aAAa,KAAM,GAErB,UAAQ,GACX,OAAG,GAAK,EAAE,aAGP,YAAU,GACb,MAAE,EAAM,EAAE,QACR,EAAM,SAAO,KAAK,EAAK,OACvB,EAAM,YAAU,EAAI,QACtB,OAAG,SAAO,OAAO,CAAC,SAAO,KAAK,CAAC,IAAK,EAAK,IAGtC,oBAAkB,GACrB,KAAC,QAAQ,SAAQ,EAAE,EAAG,KAAU,EAAK,eAAe,KACpD,MAAE,EAAS,aAAU,IACnB,EAAM,YAAU,KAAK,QAAQ,QAC7B,EAAQ,KAAK,QAAQ,KAAI,EAAE,EAAO,MAChC,QAAW,SAAO,KAAK,EAAO,QAC9B,EAAW,YAAU,EAAS,QAC9B,OAAC,SAAO,OAAO,CAAC,EAAU,EAAU,EAAK,WAAW,QAGxD,EAAF,IAAI,KAAM,SAAO,OAAO,CAAC,EAAQ,EAAK,SAAO,OAAO,MAG/C,YAAU,GACb,OAAG,EAAkB,GAEjB,WAEJ,MAAG,YADQ,KAAK,QAAQ,KAAI,EAAE,EAAK,KAAW,EAAM,IAAM,EAAM,OAC1C,KAAK,SAG1B,cAAc,GACf,MAAG,YAAY,EAAE,aAqBnB,SAAU,EAAO,EAA4B,GACjD,GAAI,EAAK,OAAS,EAAS,OACzB,MAAM,MAAM,qCAGd,MAAM,EAAY,IAAI,EACtB,EAAS,SAAQ,GAAK,EAAE,eAAe,KAEvC,MAAM,EAAQ,SAAO,KAAK,EAAa,QACjC,EAAQ,EAAU,SAClB,EAAM,YAAU,EAAK,QACrB,EAAO,SAAO,OAAO,EAAS,KAAI,GAAK,EAAE,WAAW,MACpD,EAAO,SAAO,OAClB,EAAQ,EAAU,GAAM,CAAC,EAAG,KAC1B,IAAK,EAAE,UAAU,GACf,MAAM,IAAI,MAAM,WAAW,EAAE,uBA3BrC,SAA0B,GACtB,MAAe,kBAAN,EACF,UAAU,KAEV,KAAK,UAAU,GAuBkC,CAAiB,MAGvE,OAAO,EAAE,YAAY,OAIzB,OAAO,YAAe,SAAO,OAAO,CAAC,EAAO,EAAO,EAAK,EAAM,KAS1D,SAAU,EAAO,EAAkB,GACrC,MAAI,EAAI,IAAI,IAAK,GAEnB,GAAI,EAAM,WAAa,EAAY,OACjC,MAAM,IAAI,MAAM,4CAElB,MAAM,EAAQ,YAAS,EAAG,EAAY,QAAQ,WAC9C,GAAI,IAAU,EACZ,MAAM,IAAI,MAAM,uBAAyB,GAsE3C,MAAO,EAAU,GAnEjB,SAAuB,GACrB,MAAM,EAAsC,GACtC,EAAM,OAAO,YAAU,IAE7B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,IAAK,CAC5B,MAAM,EAAK,OAAO,YAAW,IAC7B,OAAQ,GACN,QACA,QAAwB,CACtB,MAAM,EAAI,OAAO,YAAW,IAC5B,EAAU,KAAK,CAAC,EAAI,IACpB,MAEF,QACA,QAAyB,CACvB,MAAM,EAAS,GACf,IACI,EADA,EAAe,OAAO,YAAU,IAEpC,KAAO,KAAgB,CACrB,MAAM,EAAO,OAAO,YAAU,IAC9B,GAAI,GAAQ,KAAK,IAAI,EAAG,IACtB,MAAM,IAAI,MAAM,gCAElB,GAAwB,kBAAb,GAAyB,GAAY,EAC9C,MAAM,IAAI,MAAM,oCAElB,EAAW,EACX,MAAM,EAAI,OAAO,YAAW,IAC5B,EAAO,KAAK,CAAC,EAAM,IAErB,EAAU,KAAK,CAAC,EAAI,IACpB,MAEF,QAAsB,CACpB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,IAAI,EAAa,OAAO,YAAU,IAClC,KAAO,KACL,YAAW,GAGf,MAAM,EAAS,OAAO,YAAU,IAChC,YAAS,EAAM,GACf,EAAU,KAAK,CAAC,OAAI,IACpB,MAEF,QAAyB,CACvB,IAAI,EAAa,OAAO,YAAU,IAClC,KAAO,KAAc,CACnB,MAAM,EAAI,OAAO,YAAU,IAC3B,YAAS,EAAM,GACf,YAAW,GAEb,EAAU,KAAK,CAAC,OAAI,IACpB,MAEF,QACE,MAAM,IAAI,MAAM,oBAAsB,IAI5C,MAAM,EAAoB,GACpB,EAAS,OAAO,YAAU,IAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,IAC1B,EAAQ,KAAK,OAAO,YAAW,KAEjC,MAAO,CAAC,EAAW,GAEQ,CAAc,GAC3C,GAAI,EAAS,OAAS,EAAS,OAC7B,MAAM,IAAI,MAAM,iCAGlB,MAAM,EAAoB,EAAS,KAAI,GAAK,OAC5C,SAAS,EAAQ,GACf,GAAI,GAAK,GACP,MAAM,IAAI,MAAM,8BAElB,GAAI,EAAI,EACN,OAAQ,GACN,KAAM,EACJ,OAAO,EACT,KAAM,EACJ,OAAO,EACT,KAAM,EACJ,OAAO,EACT,KAAM,EACJ,OAAO,EACT,KAAM,EACJ,OAAO,GACT,KAAM,EACJ,OAAO,GACT,KAAM,EACJ,OAAO,GACT,KAAM,EACJ,OAAO,GACT,KAAM,EACJ,OAAO,GACT,KAAM,GACJ,OAAO,GACT,KAAM,GACJ,OAAO,GACT,KAAM,GACJ,OAAO,GACT,KAAM,GACJ,OAAO,EACT,KAAM,GACJ,OAAO,EACT,KAAM,GACJ,OAAO,EACT,KAAM,GACJ,OAAO,EACT,KAAM,GACJ,OAAO,EACT,KAAM,GACJ,OAAO,GACT,QACE,MAAM,IAAI,MAAM,oBAAsB,GAG5C,GAAI,GAAK,EAAS,OAChB,MAAM,IAAI,MAAM,2BAElB,OAAO,EAAM,GA4Cf,EAAS,SAAQ,CAAC,EAAO,KACvB,MAAM,EA3CR,SAAmB,GACjB,OAAQ,EAAM,IACZ,QAEE,OAAO,GADI,EAAQ,EAAM,KAG3B,QAEE,OAAO,GADI,EAAQ,EAAM,KAG3B,QAAwB,CACtB,MAAM,EAA+B,GACrC,IAAK,MAAO,EAAM,KAAO,EAAM,GAE7B,EADa,IAAI,MACF,EAAQ,GAEzB,MAAM,EAAS,GAAO,GAChB,EAAQ,EAAO,aACrB,OAAI,MAAM,QAAQ,GACT,MAAS,GAET,EAGX,QAAyB,CACvB,MAAM,EAA+B,GACrC,IAAK,MAAO,EAAM,KAAO,EAAM,GAE7B,EADa,IAAI,MACF,EAAQ,GAEzB,OAAO,GAAQ,GAEjB,QACE,OAAO,GAAK,GAAI,GAAI,IAEtB,QACE,OAAO,GAAQ,IAEjB,QACE,MAAM,IAAI,MAAM,oBAAsB,EAAM,KAItC,CAAU,GACpB,EAAM,GAAG,KAAK,MAGhB,MAAM,EAAQ,EAAS,KAAI,GAAK,EAAQ,KAClC,EAAS,EAAS,KAAI,CAAC,EAAG,IACvB,EAAE,YAAY,EAAG,EAAM,MAIhC,IAAK,IAAI,EAAM,EAAS,OAAQ,EAAM,EAAM,OAAQ,IAClD,EAAM,GAAK,YAAY,EAAG,EAAM,IAGlC,GAAI,EAAE,OAAO,OAAS,EACpB,MAAM,IAAI,MAAM,2BAGlB,OAAO,EA4CF,MAAM,EAAQ,IAAI,EACZ,EAAW,IAAI,EACf,EAAO,IAAI,EACX,EAAO,IAAI,EACX,EAAO,IAAI,EACX,EAAM,IAAI,EACV,EAAM,IAAI,EAEV,EAAU,IAAI,EAAW,IACzB,EAAU,IAAI,EAAW,IAEzB,GAAO,IAAI,EAAc,GACzB,GAAQ,IAAI,EAAc,IAC1B,GAAQ,IAAI,EAAc,IAC1B,GAAQ,IAAI,EAAc,IAE1B,GAAO,IAAI,EAAc,GACzB,GAAQ,IAAI,EAAc,IAC1B,GAAQ,IAAI,EAAc,IAC1B,GAAQ,IAAI,EAAc,IAE1B,GAAY,IAAI,EAEvB,SAAU,MAA0B,GACxC,OAAO,IAAI,EAAW,GAElB,SAAU,GAAO,GACrB,OAAO,IAAI,EAAS,GAEhB,SAAU,GAAO,GACrB,OAAO,IAAI,EAAS,GAGhB,SAAU,GAAO,GACrB,OAAO,IAAI,EAAY,GAEnB,SAAU,GAAQ,GACtB,OAAO,IAAI,EAAa,GAEpB,SAAU,KACd,OAAO,IAAI,EAGP,SAAU,GAAK,EAAc,EAAa,EAAwB,IACtE,OAAO,IAAI,EAAU,EAAM,EAAK,GAG5B,SAAU,GAAQ,GACtB,OAAO,IAAI,EAAa,G,+BCpmD1B,IAAI,GAKJ,MAAM,GAAkB,625EA6xBtB,QAAQ,kBAAmB,IAEvB,GAAY,UAAyB,IAU3C,IAAI,GAA4B,KAQhC,SAAS,GAAkB,EAAU,GACnC,MAAM,EAAM,EAAoB,EAAb,EAAI,QAEvB,OAT6B,OAAzB,IAAiC,GAAqB,SAAW,GAAK,OAAO,SAC/E,GAAuB,IAAI,WAAW,GAAK,OAAO,SAE7C,IAKW,IAAI,EAAK,EAAM,GAC1B,CAAC,EAAK,EAAI,QA4DJ,OA3Bf,eAAe,IACb,MACM,SAAE,EAAF,OAAY,SAjBpB,eAAoB,EAAa,GAC7B,GAAsB,oBAAb,UAA2B,aAAkB,SAAU,CAC5D,MAAE,QAAc,EAAO,cACvB,aAAS,YAAY,YAAY,EAAO,GACvC,CACL,MAAM,QAAiB,YAAY,YAAY,EAAQ,GAEvD,OAAI,aAAoB,YAAY,SAC3B,CAAE,WAAU,UAEZ,GAOwB,CAAK,GADxB,IAMhB,OAHA,GAAQ,EAAS,QAChB,EAAa,uBAAyB,EAEhC,ICn2BF,IAAI,GAEJ,eAAe,GACpB,EACA,EACA,GAEE,IAAG,GAAQ,CAEP,SADE,KACa,IDmyBX,GAAK,WClyBX,MAAM,IAAI,MAAM,yBAElB,GAAS,CAAC,EAAK,EAAM,IAEoB,IDszBvC,SAAqB,EAAiB,EAAe,GACvD,MAAK,EAAM,GAAQ,GAAkB,EAAK,GAAK,oBAC1C,EAAM,GAAQ,GAAkB,EAAG,GAAK,oBACxC,EAAM,GAAQ,GAAkB,EAAG,GAAK,mBAG7C,OADU,GAAK,WAAW,EAAM,EAAM,EAAM,EAAM,EAAM,GC3zB/C,CAAW,EAAM,EAAM,GAGlC,OAAO,GAAO,EAAI,EAAK,GC2DzB,SAAS,GAAc,EAAW,GAC9B,GAAE,EAAE,SAAW,EAAE,OACb,OAAG,EAEP,IAAG,IAAI,EAAI,EAAG,EAAI,EAAE,OAAQ,IAC5B,GAAI,EAAE,KAAO,EAAE,GACb,OAAO,EAGT,OAAK,EAGH,MAAO,GAKT,YAAU,EAAqC,EAAgB,eAAhB,cAHrC,KAAJ,UAAW,EACP,KAAJ,SAA8B,KAGhC,KAAC,KAAO,KAAY,EAAS,aAG5B,SAAS,GACV,IAAC,KAAK,SACF,UAAI,MAAM,wCAEd,OAkHF,SACJ,EACA,GAEA,MAAM,EAAc,GAAY,EAAK,KAAI,GACtB,kBAAN,EACF,YAAa,GAEb,YAAmB,IAAI,WAAW,MAEzC,GACJ,OAAO,GAAe,YAAiB,YAAe,IA7H7C,CAAa,EAAM,KAAK,KAAK,MAE/B,OAAO,GACZ,IAAK,KAAK,SACR,MAAM,IAAI,MAAM,wCAElB,OAAO,GAAY,EAAM,KAAK,KAAK,MAGlB,eACjB,MAAM,QAAiB,GAAY,KAAK,KAAK,MACvC,QAAe,KAAK,iBAAiB,KAAK,KAAK,YAC/C,EAAM,KAAK,KAAK,UAChB,EAsCV,SAAoB,GAClB,MAAM,EAAiB,GAAW,OAHjB,GAIjB,GAAI,EAAI,SAAW,EACjB,MAAM,IAAI,UAAU,sCAAsC,gBAE5D,MAAM,EAAS,EAAI,MAAM,EAAG,GAAW,QACvC,IAAK,GAAc,EAAQ,IACzB,MAAM,IAAI,UACR,uEAAuE,eAAuB,KAIhG,OAAK,EAAI,MAAM,GAAW,QAlDd,CAAW,GACjB,EAAM,SAAO,OAAO,CAAC,GAAW,iBAAkB,IAClD,QAAY,GAAU,EAAK,EAAK,GAEtC,OADA,KAAK,SAAW,EACT,EAGgB,2BACjB,KAAK,OAAO,eACd,KAAC,SAAW,KAAK,OAAO,QAGA,uBAAC,GACzB,IAAC,EAAG,CACA,IAAD,KAAK,SAAU,CACV,GAAJ,KAAK,OAAO,QAEd,OADA,KAAK,SAAW,KAAK,OAAO,QACrB,KAAK,SAEd,KAAK,eAAiB,KAAK,OAAO,eAE9B,OAAC,KAAK,SAEV,MAAE,EAAoB,IAAI,GAAY,EAAU,KAAK,QACrD,UAAQ,EAAK,SACT,UAAI,MAAM,yCAEd,MAAE,EAAM,EAAK,OAAO,CAAC,SAAO,KAAK,UAAW,EAAE,UAAW,SAAO,KAAK,gBACrE,OAAG,QAAQ,QAAQ,IAI3B,MAAM,GAAa,SAAO,KACxB,6EACA,OAsBK,eAAe,GAAY,GAChC,OAAQA,EAAE,IACR,OACE,OAAO,aAAK,GAAW,sBACzB,OACE,OAAO,SAAO,KAAK,EAAE,IACnB,KAAJ,EACQ,OAAC,aACL,SAAO,OAAO,CACZ,GAAW,oBACX,SAAO,KAAK,EAAE,OAGpB,OACE,OAAO,aACL,SAAO,OAAO,CACZ,GAAW,uBACX,SAAO,KAAK,EAAE,IACd,SAAO,WAAW,GAAY,EAAE,QAGlC,KAAK,EACD,OAAC,aACL,SAAO,OAAO,CACZ,GAAW,oBACX,SAAO,WAAW,GAAY,EAAE,KAChC,SAAO,WAAW,GAAY,EAAE,QAGtC,QACE,MAAM,IAAI,MAAM,gBAItB,SAAS,GAAW,GAChB,MAAI,EAAM,SAAO,MAAM,GAEvB,OADA,EAAE,WAAWD,EAAE,OAAQ,GAClB,SAAO,OAAO,CAAC,EAAK,SAAO,KAAK,KA0BnC,SAAU,GAAY,EAAgB,GAC1C,GAAoB,IAAhB,EAAK,OACP,OAAQ,EAAK,IACX,OACE,OAAO,SAAO,KAAK,EAAK,IAE1B,QACE,OAIN,MAAM,EAeR,SAAoB,EAAW,GAC7B,GAAqB,IAAjB,EAAM,OACR,OAEF,IAAK,MAAM,KAAK,EACd,GAAQ,IAAJ,EAAE,GAAuB,CAE3B,GAAI,GAAc,EADR,SAAO,KAAK,EAAE,KAEtB,OAAO,EAAE,IAvBL,CAAW,EAAK,GAAI,GAAc,IAC5C,GAAI,EACF,OAAO,GAAY,EAAK,MAAM,GAAI,GAGtC,SAAS,GAAc,GACrB,OAAQ,EAAE,IACR,OACE,MAAO,GACT,OACE,OAAO,GAAc,EAAE,IAAgB,OAAO,GAAc,EAAE,KAChE,QACE,MAAO,CAAC,ICnPR,SAAU,KACZ,OAAK,GAAM,GAAiB,KAAQ,KAAO,GAAQ,IAAM,KAAM,GAPtC,MAavB,SAAU,KACd,IAAI,GAAQ,EACZ,OAAO,WACD,IACF,GAAQ,GACD,GAWP,SAAU,GAAiB,EAA+B,GAC5D,OAAK,MACL,EACA,EACA,KAEI,SAAM,EAAU,EAAY,EAAW,GACzC,OAAO,IAAI,SAAQ,GAAW,WAAW,EAAS,MASlD,SAAU,GAAY,GAC1B,IAAI,EAAW,EACf,OAAO,MACL,EACA,EACA,KAEA,KAAM,GAAY,EAChB,MAAM,IAAI,MACR,gDAAgD,8BAC7B,aAAM,yBACF,QAUzB,SAAU,GAAS,GACrB,MAAK,IAAM,IAAI,SAAQ,GAAW,WAAW,EAAS,KAOpD,SAAU,GAAQ,GACtB,MAAM,EAAM,KAAK,MAAQ,EACzB,OAAO,MACL,EACA,EACA,KAEI,QAAK,MAAQ,EACf,MAAM,IAAI,MACR,2BAA2B,0BACR,aAAM,yBACF,QAYzB,SAAU,GAAQ,EAAgC,GACtD,IAAI,EAAoB,EAExB,MAAO,IACL,IAAI,SAAQ,GACV,YAAW,KACT,GAAqB,EACrB,MACC,KASH,SAAU,MAAS,GACvB,OAAO,MACL,EACA,EACA,KAEA,IAAK,MAAM,KAAK,QACR,EAAE,EAAY,EAAW,IC3G9B,eAAe,GACpB,EACA,EACA,EACA,GAEE,MAAI,EAAO,CAAC,YAAa,kBAAmB,GACxC,QAAc,EAAM,UAAU,EAAY,CAAE,MAAO,CAAC,KACpD,EAAO,IAAI,GAAY,EAAO,GAElC,UADqB,EAAK,SAEtB,MAAE,IAAI,MAAM,8BAEhB,MAAI,EAAW,EAAK,OAAO,IAAI,EAAM,YAAa,YAClD,IAAE,EAQF,OALI,EAFkB,qBAAb,EAEA,IAA4B,QAE5B,EAAS,WAGZ,GACF,KAAC,IAA4B,QACvB,OAAD,EAAK,OAAO,IAAI,EAAM,YAAa,WAGxC,KAAC,IAA4B,SAC7B,KAAC,IAA4B,QAC7B,KAAC,IAA4B,WAG/B,aADM,EAAS,EAAY,EAAW,GAC/B,GAAgB,EAAO,EAAY,EAAW,GAEvD,KAAK,IAA4B,SAAU,CACzC,MAAM,EAAa,EAAK,OAAO,IAAI,EAAM,YAAa,iBAAkB,WAClE,EAAgB,EAAK,OAAO,IAAI,EAAM,YAAa,oBAAqB,WAC9E,MAAM,IAAI,MAEN,qCAAiB,aAAe,sBACd,qBACA,OAIxB,KAAK,IAA4B,KAG/B,MAAM,IAAI,MAEN,sEAAiB,aAAe,QAGxC,MAAM,IAAI,MAAM,eCKlB,IAAY,IAAZ,SAAY,GACR,EAAF,kBACE,EAAF,sBACE,EAAF,kBAHF,CAAY,QAAmB,KAiB/B,MAAM,GAAiB,OAAO,IAAI,qBAM5B,MAAO,GAoHX,YAAsB,GACpB,KAAK,IAAkB,OAAO,OAAO,GA/GlB,eAAC,GAChB,OAAG,EAAM,IAAgB,OAAO,MAOb,mBAAC,GACpB,OAAG,EAAM,IAAgB,QAGL,oBAAC,GACrB,OAAG,IAAU,KAAK,EAAM,IAAgB,OAAO,YAG1B,qBACzB,EAKA,GAEI,MAAE,OAAuB,IAAhB,EAAO,KAAqB,GAAoB,QAAU,EAAO,KAExE,EAAM,EAAO,IAAM,IAAI,EAAO,KAAO,GAErC,EAAa,IAAI,EAAO,QACxB,EACyB,kBAAtB,EAAO,WACV,IAAU,SAAS,EAAO,YAC1B,EAAO,iBAEP,EAAsB,GAAQ,aAAa,CACzC,MAAE,CAAC,GAAO,MACV,MACA,YAAO,EACP,YAAO,IAIiB,4BAAC,GAC7B,MAAI,YAAa,SAAqB,EACxC,GAAU,IACV,wCAAwC,CAAE,OAAQ,GAAI,SAAU,KAE9D,OAAG,EAGmC,sCAC1C,EACA,EAIA,GAEA,MAAM,QAAmB,KAAK,eAAe,GAQ7C,aAPM,KAAK,QAAO,iBAEX,GAAM,+BAEN,GAAM,CAAE,gBAGR,KAAK,YAAY,EAAgB,+BAAO,GAAM,CAAE,gBAG3B,wBAAC,GAC7B,MAAM,EAAU,EAAiB,CAAE,QA0BnC,OAxBA,cAA4B,GAG1B,YAAY,GACV,MAAM,EACyB,kBAAtB,EAAO,WACV,IAAU,SAAS,EAAO,YAC1B,EAAO,WAEb,MAAM,CACJ,OAAM,6CACD,IACA,GAAM,CACT,eAEF,YAGF,IAAK,MAAO,EAAY,KAAS,EAAQ,QACvC,KAAK,GAAc,GAAmB,KAAM,EAAY,KAQvC,mBACvB,EACA,GAEA,OAAQ,IAAK,KAAK,iBAAiB,GAA3B,CACN,IAcN,SAAS,GAAkB,EAAmB,GAC5C,MAAM,EAAe,EAAW,EAAO,SAAO,KAAK,IACnD,OAAQ,EAAa,QACnB,KAAK,EACH,OACF,KAAK,EACH,OAAO,EAAa,GACtB,QACE,OAAO,GAIb,MAAM,GAAuB,CAC3B,uBAAwB,EAAS,iBAKnC,SAAS,GAAmB,EAAc,EAAoB,GAC5D,IAAI,EAEF,EADE,EAAK,YAAY,SAAS,SACnB,MAAO,KAAY,K,QAU1B,MAAM,GARN,EAAO,+BACF,GAC2C,QAA3C,OAAM,IAAgB,QAAO,sBAAc,sBAAG,EAAY,EAAI,+BAC5D,EAAM,IAAgB,QACtB,MAIe,OAAS,EAAM,IAAgB,OAAO,OAAS,cAC/D,EAAM,EAAQ,YAAc,EAAM,IAAgB,OAAO,WACzD,EAAM,EAAW,EAAK,SAAU,GAEhC,QAAe,EAAM,MAAM,EAAK,CAAE,aAAY,QAEpD,OAAQ,EAAO,QACb,eACE,MAAM,IAAI,MAEN,4BAAa,EAAO,sBACN,EAAO,oBAG3B,cACE,OAAO,GAAkB,EAAK,SAAU,EAAO,MAAM,OAIlD,MAAO,KAAY,K,QAU1B,MAAM,GARN,EAAO,+BACF,GAC0C,QAA1C,OAAM,IAAgB,QAAO,qBAAa,sBAAG,EAAY,EAAI,+BAC3D,EAAM,IAAgB,QACtB,MAIe,OAAS,EAAM,IAAgB,OAAO,OAAS,eAC/D,WAAE,EAAF,oBAAc,EAAd,uBAAmC,GAAwB,6CAC5D,IACA,EAAM,IAAgB,QACtB,GAEC,EAAM,IAAU,KAAK,GACrB,OAA+B,IAAxB,EAAoC,IAAU,KAAK,GAAuB,EACjF,EAAM,EAAW,EAAK,SAAU,IAChC,UAAE,EAAF,SAAa,SAAmB,EAAM,KAAK,EAAK,CACpD,aACA,MACA,oBAAqB,IAGvB,IAAK,EAAS,GACZ,MAAM,IAAI,MACR,CACE,eACA,aAAa,KAAc,KAC3B,kBAAkB,IAClB,iBAAiB,aAAe,KAChC,uBAAuB,EAAS,SAChC,uBAAuB,EAAS,cAChC,KAAK,OAIX,MAAM,EAAe,IACf,QAAsB,GAAgB,EAAO,EAAM,EAAW,GAEpE,QAAsB,IAAlB,EACF,OAAO,GAAkB,EAAK,SAAU,GACnC,GAA6B,IAAzB,EAAK,SAAS,OAGvB,MAAM,IAAI,MAAM,0CAA0C,EAAK,SAAS,KAAK,WAKnF,MAAM,EAAU,IAAI,IAAoB,EAAO,MAAO,GAEtD,OADA,EAAQ,YAAe,GAAwB,IAAI,IAAoB,EAAO,KAAY,GACnF,E,wDC3UT,kSAsBM,SAAU,EAAe,GAC7B,OAAO,EAGH,SAAU,EAAmB,GACjC,OAAO,SAAO,KAAK,GAGf,SAAU,EAAa,GAC3B,OAAO,SAAO,KAAK,GAOf,SAAU,EAAgB,GAC9B,OAAO,EAGH,SAAU,EAAY,GAC1B,OAAO,SAAO,KAAK,EAAK,OAGpB,SAAU,EAAU,GACxB,OAAO,EAAK,SAAS,OAGjB,SAAU,EAAiB,GAC/B,OAAO,IAAI,WAAW,EAAK,MAAM,EAAG,EAAK,aASrC,SAAU,IACd,OAAO,YACL,QAAQ,KAAK,OAAS,OAAO,KAAU,OAAO,KAAK,MAAsB,IAAhB,KAAK,c,iFC7DlE,MAAME,EAAW,mCAGX,EAAsC,OAAO,OAAO,MAC1D,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAY,EAAS,IAAM,EAI7B,EAAY,GAAO,EAAY,EAC/B,EAAY,GAAO,EAAY,ECP/B,MAAM,EAA2B,IAAI,YAAY,CAC/C,EAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,SAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,SAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,SACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,UACpC,WAA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ACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAE,EAEAC,EAEAC,EAEAC,EACA19G,GACAA,GACAA,GACAA,GAEA29G,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EACAA,EAEAC,EAEAC,EAEAC,GAEAC,GACA/9G,GACAA,GACAA,GACAA,GAEA1C,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA2gH,GAEAC,GAEAC,GAEAC,GACAp+G,GACAA,GACAA,GAEAq+G,GAEA9gH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEA+gH,GAEAC,GAEAC,GAEAC,GAEAz+G,GACAA,GACAA,GACA0+G,GAEAlhH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAmhH,GAEAC,GAEAC,GAEAC,GAEA9+G,GACAA,GACAA,GACA++G,GAEAthH,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,GAEAuhH,GAEAC,GAEAC,GAEAC,GACAn/G,GACAA,GACAA,GAEAo/G,GAEAC,GAEAA,GAEAA,GAEAA,GAEAA,GAEAA,GAEAK,GACAA,GACAA,GACAA,GACAA,GACAA,GACAA,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","file":"static/js/2.e690bfe0.chunk.js","sourcesContent":["'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","import Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nexport function safeRead(pipe, num) {\n if (pipe.buffer.length < num) {\n throw new Error('unexpected end of buffer');\n }\n return pipe.read(num);\n}\n/**\n * Encode a positive number (or bigint) into a Buffer. The number will be floored to the\n * nearest integer.\n * @param value The number to encode.\n */\nexport function lebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n if (value < BigInt(0)) {\n throw new Error('Cannot leb encode negative values.');\n }\n const pipe = new Pipe();\n while (true) {\n const i = Number(value & BigInt(0x7f));\n value /= BigInt(0x80);\n if (value === BigInt(0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number will always be positive (does not\n * support signed leb encoding).\n * @param pipe A Buffer containing the leb encoded bits.\n */\nexport function lebDecode(pipe) {\n let weight = BigInt(1);\n let value = BigInt(0);\n let byte;\n do {\n byte = safeRead(pipe, 1)[0];\n value += BigInt(byte & 0x7f).valueOf() * weight;\n weight *= BigInt(128);\n } while (byte >= 0x80);\n return value;\n}\n/**\n * Encode a number (or bigint) into a Buffer, with support for negative numbers. The number\n * will be floored to the nearest integer.\n * @param value The number to encode.\n */\nexport function slebEncode(value) {\n if (typeof value === 'number') {\n value = BigInt(value);\n }\n const isNeg = value < BigInt(0);\n if (isNeg) {\n value = -value - BigInt(1);\n }\n const pipe = new Pipe();\n while (true) {\n const i = getLowerBytes(value);\n value /= BigInt(0x80);\n // prettier-ignore\n if ((isNeg && value === BigInt(0) && (i & 0x40) !== 0)\n || (!isNeg && value === BigInt(0) && (i & 0x40) === 0)) {\n pipe.write([i]);\n break;\n }\n else {\n pipe.write([i | 0x80]);\n }\n }\n function getLowerBytes(num) {\n const bytes = num % BigInt(0x80);\n if (isNeg) {\n // We swap the bits here again, and remove 1 to do two's complement.\n return Number(BigInt(0x80) - bytes - BigInt(1));\n }\n else {\n return Number(bytes);\n }\n }\n return new Buffer(pipe.buffer);\n}\n/**\n * Decode a leb encoded buffer into a bigint. The number is decoded with support for negative\n * signed-leb encoding.\n * @param pipe A Buffer containing the signed leb encoded bits.\n */\nexport function slebDecode(pipe) {\n // Get the size of the buffer, then cut a buffer of that size.\n const pipeView = new Uint8Array(pipe.buffer);\n let len = 0;\n for (; len < pipeView.byteLength; len++) {\n if (pipeView[len] < 0x80) {\n // If it's a positive number, we reuse lebDecode.\n if ((pipeView[len] & 0x40) === 0) {\n return lebDecode(pipe);\n }\n break;\n }\n }\n const bytes = new Uint8Array(safeRead(pipe, len + 1));\n let value = BigInt(0);\n for (let i = bytes.byteLength - 1; i >= 0; i--) {\n value = value * BigInt(0x80) + BigInt(0x80 - (bytes[i] & 0x7f) - 1);\n }\n return -value - BigInt(1);\n}\nexport function writeUIntLE(value, byteLength) {\n if (BigInt(value) < BigInt(0)) {\n throw new Error('Cannot write negative values.');\n }\n return writeIntLE(value, byteLength);\n}\nexport function writeIntLE(value, byteLength) {\n value = BigInt(value);\n const pipe = new Pipe();\n let i = 0;\n let mul = BigInt(256);\n let sub = BigInt(0);\n let byte = Number(value % mul);\n pipe.write([byte]);\n while (++i < byteLength) {\n if (value < 0 && sub === BigInt(0) && byte !== 0) {\n sub = BigInt(1);\n }\n byte = Number((value / mul - sub) % BigInt(256));\n pipe.write([byte]);\n mul *= BigInt(256);\n }\n return new Buffer(pipe.buffer);\n}\nexport function readUIntLE(pipe, byteLength) {\n let val = BigInt(safeRead(pipe, 1)[0]);\n let mul = BigInt(1);\n let i = 0;\n while (++i < byteLength) {\n mul *= BigInt(256);\n const byte = BigInt(safeRead(pipe, 1)[0]);\n val = val + mul * byte;\n }\n return val;\n}\nexport function readIntLE(pipe, byteLength) {\n let val = readUIntLE(pipe, byteLength);\n const mul = BigInt(2) ** (BigInt(8) * BigInt(byteLength - 1) + BigInt(7));\n if (val >= mul) {\n val -= mul * BigInt(2);\n }\n return val;\n}\n//# sourceMappingURL=leb128.js.map","/**\n * This file is generated from the candid for asset management.\n */\n/* tslint:disable */\n// @ts-ignore\nexport default ({ IDL }) => {\n const canister_id = IDL.Principal;\n const wasm_module = IDL.Vec(IDL.Nat8);\n const CanisterSettings = IDL.Record({\n compute_allocation: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Opt(IDL.Nat),\n });\n return IDL.Service({\n provisional_create_canister_with_cycles: IDL.Func([\n IDL.Record({ amount: IDL.Opt(IDL.Nat), settings: IDL.Opt(CanisterSettings) }),\n ], [\n IDL.Record({ canister_id: canister_id }),\n ], []),\n create_canister: IDL.Func([], [IDL.Record({ canister_id: canister_id })], []),\n install_code: IDL.Func([\n IDL.Record({\n mode: IDL.Variant({ install: IDL.Null, reinstall: IDL.Null, upgrade: IDL.Null }),\n canister_id: canister_id,\n wasm_module: wasm_module,\n arg: IDL.Vec(IDL.Nat8),\n }),\n ], [], []),\n set_controller: IDL.Func([IDL.Record({ canister_id: canister_id, new_controller: IDL.Principal })], [], []),\n });\n};\n//# sourceMappingURL=management_idl.js.map","import { Actor } from '../actor';\nimport { Principal } from '../principal';\nimport managementCanisterIdl from './management_idl';\n/* tslint:enable */\n/**\n * Create a management canister actor.\n * @param config\n */\nexport function getManagementCanister(config) {\n function transform(methodName, args, callConfig) {\n const first = args[0];\n let effectiveCanisterId = Principal.fromHex('');\n if (first && typeof first === 'object' && first.canister_id) {\n effectiveCanisterId = Principal.from(first.canister_id);\n }\n return { effectiveCanisterId };\n }\n return Actor.createActor(managementCanisterIdl, Object.assign(Object.assign(Object.assign({}, config), { canisterId: Principal.fromHex('') }), {\n callTransform: transform,\n queryTransform: transform,\n }));\n}\n//# sourceMappingURL=management.js.map","/**\n * Hashes a string to a number. Algorithm can be found here:\n * https://caml.inria.fr/pub/papers/garrigue-polymorphic_variants-ml98.pdf\n * @param s\n */\nfunction idlHash(s) {\n const utf8encoder = new TextEncoder();\n const array = utf8encoder.encode(s);\n let h = 0;\n for (const c of array) {\n h = (h * 223 + c) % 2 ** 32;\n }\n return h;\n}\nexport function idlLabelToId(label) {\n if (/^_\\d+_$/.test(label) || /^_0x[0-9a-fA-F]+_$/.test(label)) {\n const num = +label.slice(1, -1);\n if (Number.isSafeInteger(num) && num >= 0 && num < 2 ** 32) {\n return num;\n }\n }\n return idlHash(label);\n}\n//# sourceMappingURL=hash.js.map","// tslint:disable:max-classes-per-file\nimport Pipe from 'buffer-pipe';\nimport { Buffer } from 'buffer/';\nimport { Principal as PrincipalId } from './principal';\nimport { blobFromBuffer } from './types';\nimport { idlLabelToId } from './utils/hash';\nimport { lebDecode, lebEncode, safeRead, slebDecode, slebEncode } from './utils/leb128';\nimport { readIntLE, readUIntLE, writeIntLE, writeUIntLE } from './utils/leb128';\nconst magicNumber = 'DIDL';\nfunction zipWith(xs, ys, f) {\n return xs.map((x, i) => f(x, ys[i]));\n}\n/**\n * An IDL Type Table, which precedes the data in the stream.\n */\nclass TypeTable {\n constructor() {\n // List of types. Needs to be an array as the index needs to be stable.\n this._typs = [];\n this._idx = new Map();\n }\n has(obj) {\n return this._idx.has(obj.name);\n }\n add(type, buf) {\n const idx = this._typs.length;\n this._idx.set(type.name, idx);\n this._typs.push(buf);\n }\n merge(obj, knot) {\n const idx = this._idx.get(obj.name);\n const knotIdx = this._idx.get(knot);\n if (idx === undefined) {\n throw new Error('Missing type index for ' + obj);\n }\n if (knotIdx === undefined) {\n throw new Error('Missing type index for ' + knot);\n }\n this._typs[idx] = this._typs[knotIdx];\n // Delete the type.\n this._typs.splice(knotIdx, 1);\n this._idx.delete(knot);\n }\n encode() {\n const len = lebEncode(this._typs.length);\n const buf = Buffer.concat(this._typs);\n return Buffer.concat([len, buf]);\n }\n indexOf(typeName) {\n if (!this._idx.has(typeName)) {\n throw new Error('Missing type index for ' + typeName);\n }\n return slebEncode(this._idx.get(typeName) || 0);\n }\n}\nexport class Visitor {\n visitType(t, data) {\n throw new Error('Not implemented');\n }\n visitPrimitive(t, data) {\n return this.visitType(t, data);\n }\n visitEmpty(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitBool(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNull(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitReserved(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitText(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitNumber(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitFloat(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitFixedInt(t, data) {\n return this.visitNumber(t, data);\n }\n visitFixedNat(t, data) {\n return this.visitNumber(t, data);\n }\n visitPrincipal(t, data) {\n return this.visitPrimitive(t, data);\n }\n visitConstruct(t, data) {\n return this.visitType(t, data);\n }\n visitVec(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitOpt(t, ty, data) {\n return this.visitConstruct(t, data);\n }\n visitRecord(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitTuple(t, components, data) {\n const fields = components.map((ty, i) => [`_${i}_`, ty]);\n return this.visitRecord(t, fields, data);\n }\n visitVariant(t, fields, data) {\n return this.visitConstruct(t, data);\n }\n visitRec(t, ty, data) {\n return this.visitConstruct(ty, data);\n }\n visitFunc(t, data) {\n return this.visitConstruct(t, data);\n }\n visitService(t, data) {\n return this.visitConstruct(t, data);\n }\n}\n/**\n * Represents an IDL type.\n */\nexport class Type {\n /* Display type name */\n display() {\n return this.name;\n }\n valueToString(x) {\n return JSON.stringify(x);\n }\n /* Implement `T` in the IDL spec, only needed for non-primitive types */\n buildTypeTable(typeTable) {\n if (!typeTable.has(this)) {\n this._buildTypeTableImpl(typeTable);\n }\n }\n}\nexport class PrimitiveType extends Type {\n checkType(t) {\n if (this.name !== t.name) {\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n return t;\n }\n _buildTypeTableImpl(typeTable) {\n // No type table encoding for Primitive types.\n return;\n }\n}\nexport class ConstructType extends Type {\n checkType(t) {\n if (t instanceof RecClass) {\n const ty = t.getType();\n if (typeof ty === 'undefined') {\n throw new Error('type mismatch with uninitialized type');\n }\n return ty;\n }\n throw new Error(`type mismatch: type on the wire ${t.name}, expect type ${this.name}`);\n }\n encodeType(typeTable) {\n return typeTable.indexOf(this.name);\n }\n}\n/**\n * Represents an IDL Empty, a type which has no inhabitants.\n * Since no values exist for this type, it cannot be serialised or deserialised.\n * Result types like `Result` should always succeed.\n */\nexport class EmptyClass extends PrimitiveType {\n accept(v, d) {\n return v.visitEmpty(this, d);\n }\n covariant(x) {\n return false;\n }\n encodeValue() {\n throw new Error('Empty cannot appear as a function argument');\n }\n valueToString() {\n throw new Error('Empty cannot appear as a value');\n }\n encodeType() {\n return slebEncode(-17 /* Empty */);\n }\n decodeValue() {\n throw new Error('Empty cannot appear as an output');\n }\n get name() {\n return 'empty';\n }\n}\n/**\n * Represents an IDL Bool\n */\nexport class BoolClass extends PrimitiveType {\n accept(v, d) {\n return v.visitBool(this, d);\n }\n covariant(x) {\n return typeof x === 'boolean';\n }\n encodeValue(x) {\n const buf = Buffer.alloc(1);\n buf.writeInt8(x ? 1 : 0, 0);\n return buf;\n }\n encodeType() {\n return slebEncode(-2 /* Bool */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, 1).toString('hex');\n if (x === '00') {\n return false;\n }\n else if (x === '01') {\n return true;\n }\n else {\n throw new Error('Boolean value out of range');\n }\n }\n get name() {\n return 'bool';\n }\n}\n/**\n * Represents an IDL Null\n */\nexport class NullClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNull(this, d);\n }\n covariant(x) {\n return x === null;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-1 /* Null */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return null;\n }\n get name() {\n return 'null';\n }\n}\n/**\n * Represents an IDL Reserved\n */\nexport class ReservedClass extends PrimitiveType {\n accept(v, d) {\n return v.visitReserved(this, d);\n }\n covariant(x) {\n return true;\n }\n encodeValue() {\n return Buffer.alloc(0);\n }\n encodeType() {\n return slebEncode(-16 /* Reserved */);\n }\n decodeValue(b, t) {\n if (t.name !== this.name) {\n t.decodeValue(b, t);\n }\n return null;\n }\n get name() {\n return 'reserved';\n }\n}\nfunction isValidUTF8(buf) {\n return Buffer.compare(new Buffer(buf.toString(), 'utf8'), buf) === 0;\n}\n/**\n * Represents an IDL Text\n */\nexport class TextClass extends PrimitiveType {\n accept(v, d) {\n return v.visitText(this, d);\n }\n covariant(x) {\n return typeof x === 'string';\n }\n encodeValue(x) {\n const buf = Buffer.from(x, 'utf8');\n const len = lebEncode(buf.length);\n return Buffer.concat([len, buf]);\n }\n encodeType() {\n return slebEncode(-15 /* Text */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const len = lebDecode(b);\n const buf = safeRead(b, Number(len));\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 text');\n }\n return buf.toString('utf8');\n }\n get name() {\n return 'text';\n }\n valueToString(x) {\n return '\"' + x + '\"';\n }\n}\n/**\n * Represents an IDL Int\n */\nexport class IntClass extends PrimitiveType {\n accept(v, d) {\n return v.visitInt(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return typeof x === 'bigint' || Number.isInteger(x);\n }\n encodeValue(x) {\n return slebEncode(x);\n }\n encodeType() {\n return slebEncode(-4 /* Int */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return slebDecode(b);\n }\n get name() {\n return 'int';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Nat\n */\nexport class NatClass extends PrimitiveType {\n accept(v, d) {\n return v.visitNat(this, d);\n }\n covariant(x) {\n // We allow encoding of JavaScript plain numbers.\n // But we will always decode to bigint.\n return (typeof x === 'bigint' && x >= BigInt(0)) || (Number.isInteger(x) && x >= 0);\n }\n encodeValue(x) {\n return lebEncode(x);\n }\n encodeType() {\n return slebEncode(-3 /* Nat */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return lebDecode(b);\n }\n get name() {\n return 'nat';\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Float\n */\nexport class FloatClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n if (_bits !== 32 && _bits !== 64) {\n throw new Error('not a valid float type');\n }\n }\n accept(v, d) {\n return v.visitFloat(this, d);\n }\n covariant(x) {\n return typeof x === 'number' || x instanceof Number;\n }\n encodeValue(x) {\n const buf = Buffer.allocUnsafe(this._bits / 8);\n if (this._bits === 32) {\n buf.writeFloatLE(x, 0);\n }\n else {\n buf.writeDoubleLE(x, 0);\n }\n return buf;\n }\n encodeType() {\n const opcode = this._bits === 32 ? -13 /* Float32 */ : -14 /* Float64 */;\n return slebEncode(opcode);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const x = safeRead(b, this._bits / 8);\n if (this._bits === 32) {\n return x.readFloatLE(0);\n }\n else {\n return x.readDoubleLE(0);\n }\n }\n get name() {\n return 'float' + this._bits;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Int(n)\n */\nexport class FixedIntClass extends PrimitiveType {\n constructor(_bits) {\n super();\n this._bits = _bits;\n }\n accept(v, d) {\n return v.visitFixedInt(this, d);\n }\n covariant(x) {\n const min = BigInt(2) ** BigInt(this._bits - 1) * BigInt(-1);\n const max = BigInt(2) ** BigInt(this._bits - 1) - BigInt(1);\n if (typeof x === 'bigint') {\n return x >= min && x <= max;\n }\n else if (Number.isInteger(x)) {\n const v = BigInt(x);\n return v >= min && v <= max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeIntLE(x, this._bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this._bits) - 3;\n return slebEncode(-9 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readIntLE(b, this._bits / 8);\n if (this._bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `int${this._bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL fixed-width Nat(n)\n */\nexport class FixedNatClass extends PrimitiveType {\n constructor(bits) {\n super();\n this.bits = bits;\n }\n accept(v, d) {\n return v.visitFixedNat(this, d);\n }\n covariant(x) {\n const max = BigInt(2) ** BigInt(this.bits);\n if (typeof x === 'bigint' && x > BigInt(0)) {\n return x < max;\n }\n else if (Number.isInteger(x) && x >= 0) {\n const v = BigInt(x);\n return v < max;\n }\n else {\n return false;\n }\n }\n encodeValue(x) {\n return writeUIntLE(x, this.bits / 8);\n }\n encodeType() {\n const offset = Math.log2(this.bits) - 3;\n return slebEncode(-5 - offset);\n }\n decodeValue(b, t) {\n this.checkType(t);\n const num = readUIntLE(b, this.bits / 8);\n if (this.bits <= 32) {\n return Number(num);\n }\n else {\n return num;\n }\n }\n get name() {\n return `nat${this.bits}`;\n }\n valueToString(x) {\n return x.toString();\n }\n}\n/**\n * Represents an IDL Array\n * @param {Type} t\n */\nexport class VecClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n // If true, this vector is really a blob and we can just use memcpy.\n this._blobOptimization = false;\n if (_type instanceof FixedNatClass && _type.bits === 8) {\n this._blobOptimization = true;\n }\n }\n accept(v, d) {\n return v.visitVec(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && x.every(v => this._type.covariant(v));\n }\n encodeValue(x) {\n const len = lebEncode(x.length);\n if (this._blobOptimization) {\n return Buffer.concat([len, Buffer.from(x)]);\n }\n return Buffer.concat([len, ...x.map(d => this._type.encodeValue(d))]);\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-19 /* Vector */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const vec = this.checkType(t);\n if (!(vec instanceof VecClass)) {\n throw new Error('Not a vector type');\n }\n const len = Number(lebDecode(b));\n if (this._blobOptimization) {\n return [...new Uint8Array(b.read(len))];\n }\n const rets = [];\n for (let i = 0; i < len; i++) {\n rets.push(this._type.decodeValue(b, vec._type));\n }\n return rets;\n }\n get name() {\n return `vec ${this._type.name}`;\n }\n display() {\n return `vec ${this._type.display()}`;\n }\n valueToString(x) {\n const elements = x.map(e => this._type.valueToString(e));\n return 'vec {' + elements.join('; ') + '}';\n }\n}\n/**\n * Represents an IDL Option\n * @param {Type} t\n */\nexport class OptClass extends ConstructType {\n constructor(_type) {\n super();\n this._type = _type;\n }\n accept(v, d) {\n return v.visitOpt(this, this._type, d);\n }\n covariant(x) {\n return Array.isArray(x) && (x.length === 0 || (x.length === 1 && this._type.covariant(x[0])));\n }\n encodeValue(x) {\n if (x.length === 0) {\n return Buffer.from([0]);\n }\n else {\n return Buffer.concat([Buffer.from([1]), this._type.encodeValue(x[0])]);\n }\n }\n _buildTypeTableImpl(typeTable) {\n this._type.buildTypeTable(typeTable);\n const opCode = slebEncode(-18 /* Opt */);\n const buffer = this._type.encodeType(typeTable);\n typeTable.add(this, Buffer.concat([opCode, buffer]));\n }\n decodeValue(b, t) {\n const opt = this.checkType(t);\n if (!(opt instanceof OptClass)) {\n throw new Error('Not an option type');\n }\n const len = safeRead(b, 1).toString('hex');\n if (len === '00') {\n return [];\n }\n else if (len === '01') {\n return [this._type.decodeValue(b, opt._type)];\n }\n else {\n throw new Error('Not an option value');\n }\n }\n get name() {\n return `opt ${this._type.name}`;\n }\n display() {\n return `opt ${this._type.display()}`;\n }\n valueToString(x) {\n if (x.length === 0) {\n return 'null';\n }\n else {\n return `opt ${this._type.valueToString(x[0])}`;\n }\n }\n}\n/**\n * Represents an IDL Record\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class RecordClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitRecord(this, this._fields, d);\n }\n tryAsTuple() {\n const res = [];\n for (let i = 0; i < this._fields.length; i++) {\n const [key, type] = this._fields[i];\n if (key !== `_${i}_`) {\n return null;\n }\n res.push(type);\n }\n return res;\n }\n covariant(x) {\n return (typeof x === 'object' &&\n this._fields.every(([k, t]) => {\n if (!x.hasOwnProperty(k)) {\n throw new Error(`Record is missing key \"${k}\".`);\n }\n return t.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n const values = this._fields.map(([key]) => x[key]);\n const bufs = zipWith(this._fields, values, ([, c], d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, value]) => value.buildTypeTable(T));\n const opCode = slebEncode(-20 /* Record */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(T)]));\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(fields)]));\n }\n decodeValue(b, t) {\n const record = this.checkType(t);\n if (!(record instanceof RecordClass)) {\n throw new Error('Not a record type');\n }\n const x = {};\n let idx = 0;\n for (const [hash, type] of record._fields) {\n if (idx >= this._fields.length || idlLabelToId(this._fields[idx][0]) !== idlLabelToId(hash)) {\n // skip field\n type.decodeValue(b, type);\n continue;\n }\n const [expectKey, expectType] = this._fields[idx];\n x[expectKey] = expectType.decodeValue(b, type);\n idx++;\n }\n if (idx < this._fields.length) {\n throw new Error('Cannot find field ' + this._fields[idx][0]);\n }\n return x;\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `record {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(x) {\n const values = this._fields.map(([key]) => x[key]);\n const fields = zipWith(this._fields, values, ([k, c], d) => k + '=' + c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents Tuple, a syntactic sugar for Record.\n * @param {Type} components\n */\nexport class TupleClass extends RecordClass {\n constructor(_components) {\n const x = {};\n _components.forEach((e, i) => (x['_' + i + '_'] = e));\n super(x);\n this._components = _components;\n }\n accept(v, d) {\n return v.visitTuple(this, this._components, d);\n }\n covariant(x) {\n // `>=` because tuples can be covariant when encoded.\n return (Array.isArray(x) &&\n x.length >= this._fields.length &&\n this._components.every((t, i) => t.covariant(x[i])));\n }\n encodeValue(x) {\n const bufs = zipWith(this._components, x, (c, d) => c.encodeValue(d));\n return Buffer.concat(bufs);\n }\n decodeValue(b, t) {\n const tuple = this.checkType(t);\n if (!(tuple instanceof TupleClass)) {\n throw new Error('not a tuple type');\n }\n if (tuple._components.length < this._components.length) {\n throw new Error('tuple mismatch');\n }\n const res = [];\n for (const [i, wireType] of tuple._components.entries()) {\n if (i >= this._components.length) {\n // skip value\n wireType.decodeValue(b, wireType);\n }\n else {\n res.push(this._components[i].decodeValue(b, wireType));\n }\n }\n return res;\n }\n display() {\n const fields = this._components.map(value => value.display());\n return `record {${fields.join('; ')}}`;\n }\n valueToString(values) {\n const fields = zipWith(this._components, values, (c, d) => c.valueToString(d));\n return `record {${fields.join('; ')}}`;\n }\n}\n/**\n * Represents an IDL Variant\n * @param {Object} [fields] - mapping of function name to Type\n */\nexport class VariantClass extends ConstructType {\n constructor(fields = {}) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitVariant(this, this._fields, d);\n }\n covariant(x) {\n return (typeof x === 'object' &&\n Object.entries(x).length === 1 &&\n this._fields.every(([k, v]) => {\n return !x.hasOwnProperty(k) || v.covariant(x[k]);\n }));\n }\n encodeValue(x) {\n for (let i = 0; i < this._fields.length; i++) {\n const [name, type] = this._fields[i];\n if (x.hasOwnProperty(name)) {\n const idx = lebEncode(i);\n const buf = type.encodeValue(x[name]);\n return Buffer.concat([idx, buf]);\n }\n }\n throw Error('Variant has no data: ' + x);\n }\n _buildTypeTableImpl(typeTable) {\n this._fields.forEach(([, type]) => {\n type.buildTypeTable(typeTable);\n });\n const opCode = slebEncode(-21 /* Variant */);\n const len = lebEncode(this._fields.length);\n const fields = this._fields.map(([key, value]) => Buffer.concat([lebEncode(idlLabelToId(key)), value.encodeType(typeTable)]));\n typeTable.add(this, Buffer.concat([opCode, len, ...fields]));\n }\n decodeValue(b, t) {\n const variant = this.checkType(t);\n if (!(variant instanceof VariantClass)) {\n throw new Error('Not a variant type');\n }\n const idx = Number(lebDecode(b));\n if (idx >= variant._fields.length) {\n throw Error('Invalid variant index: ' + idx);\n }\n const [wireHash, wireType] = variant._fields[idx];\n for (const [key, expectType] of this._fields) {\n if (idlLabelToId(wireHash) === idlLabelToId(key)) {\n const value = expectType.decodeValue(b, wireType);\n return { [key]: value };\n }\n }\n throw new Error('Cannot find field hash ' + wireHash);\n }\n get name() {\n const fields = this._fields.map(([key, type]) => key + ':' + type.name);\n return `variant {${fields.join('; ')}}`;\n }\n display() {\n const fields = this._fields.map(([key, type]) => key + (type.name === 'null' ? '' : `:${type.display()}`));\n return `variant {${fields.join('; ')}}`;\n }\n valueToString(x) {\n for (const [name, type] of this._fields) {\n if (x.hasOwnProperty(name)) {\n const value = type.valueToString(x[name]);\n if (value === 'null') {\n return `variant {${name}}`;\n }\n else {\n return `variant {${name}=${value}}`;\n }\n }\n }\n throw new Error('Variant has no data: ' + x);\n }\n}\n/**\n * Represents a reference to an IDL type, used for defining recursive data\n * types.\n */\nexport class RecClass extends ConstructType {\n constructor() {\n super(...arguments);\n this._id = RecClass._counter++;\n this._type = undefined;\n }\n accept(v, d) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return v.visitRec(this, this._type, d);\n }\n fill(t) {\n this._type = t;\n }\n getType() {\n return this._type;\n }\n covariant(x) {\n return this._type ? this._type.covariant(x) : false;\n }\n encodeValue(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.encodeValue(x);\n }\n _buildTypeTableImpl(typeTable) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n typeTable.add(this, Buffer.alloc(0));\n this._type.buildTypeTable(typeTable);\n typeTable.merge(this, this._type.name);\n }\n decodeValue(b, t) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.decodeValue(b, t);\n }\n get name() {\n return `rec_${this._id}`;\n }\n display() {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return `μ${this.name}.${this._type.name}`;\n }\n valueToString(x) {\n if (!this._type) {\n throw Error('Recursive type uninitialized.');\n }\n return this._type.valueToString(x);\n }\n}\nRecClass._counter = 0;\nfunction decodePrincipalId(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode principal');\n }\n const len = Number(lebDecode(b));\n const hex = safeRead(b, len).toString('hex').toUpperCase();\n return PrincipalId.fromHex(hex);\n}\n/**\n * Represents an IDL principal reference\n */\nexport class PrincipalClass extends PrimitiveType {\n accept(v, d) {\n return v.visitPrincipal(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n encodeType() {\n return slebEncode(-24 /* Principal */);\n }\n decodeValue(b, t) {\n this.checkType(t);\n return decodePrincipalId(b);\n }\n get name() {\n return 'principal';\n }\n valueToString(x) {\n return `${this.name} \"${x.toText()}\"`;\n }\n}\n/**\n * Represents an IDL function reference.\n * @param argTypes Argument types.\n * @param retTypes Return types.\n * @param annotations Function annotations.\n */\nexport class FuncClass extends ConstructType {\n constructor(argTypes, retTypes, annotations = []) {\n super();\n this.argTypes = argTypes;\n this.retTypes = retTypes;\n this.annotations = annotations;\n }\n static argsToString(types, v) {\n if (types.length !== v.length) {\n throw new Error('arity mismatch');\n }\n return '(' + types.map((t, i) => t.valueToString(v[i])).join(', ') + ')';\n }\n accept(v, d) {\n return v.visitFunc(this, d);\n }\n covariant(x) {\n return (Array.isArray(x) && x.length === 2 && x[0] && x[0]._isPrincipal && typeof x[1] === 'string');\n }\n encodeValue(x) {\n const hex = x[0].toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n const canister = Buffer.concat([Buffer.from([1]), len, buf]);\n const method = Buffer.from(x[1], 'utf8');\n const methodLen = lebEncode(method.length);\n return Buffer.concat([Buffer.from([1]), canister, methodLen, method]);\n }\n _buildTypeTableImpl(T) {\n this.argTypes.forEach(arg => arg.buildTypeTable(T));\n this.retTypes.forEach(arg => arg.buildTypeTable(T));\n const opCode = slebEncode(-22 /* Func */);\n const argLen = lebEncode(this.argTypes.length);\n const args = Buffer.concat(this.argTypes.map(arg => arg.encodeType(T)));\n const retLen = lebEncode(this.retTypes.length);\n const rets = Buffer.concat(this.retTypes.map(arg => arg.encodeType(T)));\n const annLen = lebEncode(this.annotations.length);\n const anns = Buffer.concat(this.annotations.map(a => this.encodeAnnotation(a)));\n T.add(this, Buffer.concat([opCode, argLen, args, retLen, rets, annLen, anns]));\n }\n decodeValue(b) {\n const x = safeRead(b, 1).toString('hex');\n if (x !== '01') {\n throw new Error('Cannot decode function reference');\n }\n const canister = decodePrincipalId(b);\n const mLen = Number(lebDecode(b));\n const buf = safeRead(b, mLen);\n if (!isValidUTF8(buf)) {\n throw new Error('Not valid UTF8 method name');\n }\n const method = buf.toString('utf8');\n return [canister, method];\n }\n get name() {\n const args = this.argTypes.map(arg => arg.name).join(', ');\n const rets = this.retTypes.map(arg => arg.name).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) -> (${rets})${annon}`;\n }\n valueToString([principal, str]) {\n return `func \"${principal.toText()}\".${str}`;\n }\n display() {\n const args = this.argTypes.map(arg => arg.display()).join(', ');\n const rets = this.retTypes.map(arg => arg.display()).join(', ');\n const annon = ' ' + this.annotations.join(' ');\n return `(${args}) → (${rets})${annon}`;\n }\n encodeAnnotation(ann) {\n if (ann === 'query') {\n return Buffer.from([1]);\n }\n else if (ann === 'oneway') {\n return Buffer.from([2]);\n }\n else {\n throw new Error('Illeagal function annotation');\n }\n }\n}\nexport class ServiceClass extends ConstructType {\n constructor(fields) {\n super();\n this._fields = Object.entries(fields).sort((a, b) => idlLabelToId(a[0]) - idlLabelToId(b[0]));\n }\n accept(v, d) {\n return v.visitService(this, d);\n }\n covariant(x) {\n return x && x._isPrincipal;\n }\n encodeValue(x) {\n const hex = x.toHex();\n const buf = Buffer.from(hex, 'hex');\n const len = lebEncode(buf.length);\n return Buffer.concat([Buffer.from([1]), len, buf]);\n }\n _buildTypeTableImpl(T) {\n this._fields.forEach(([_, func]) => func.buildTypeTable(T));\n const opCode = slebEncode(-23 /* Service */);\n const len = lebEncode(this._fields.length);\n const meths = this._fields.map(([label, func]) => {\n const labelBuf = Buffer.from(label, 'utf8');\n const labelLen = lebEncode(labelBuf.length);\n return Buffer.concat([labelLen, labelBuf, func.encodeType(T)]);\n });\n T.add(this, Buffer.concat([opCode, len, Buffer.concat(meths)]));\n }\n decodeValue(b) {\n return decodePrincipalId(b);\n }\n get name() {\n const fields = this._fields.map(([key, value]) => key + ':' + value.name);\n return `service {${fields.join('; ')}}`;\n }\n valueToString(x) {\n return `service \"${x.toText()}\"`;\n }\n}\n/**\n *\n * @param x\n * @returns {string}\n */\nfunction toReadableString(x) {\n if (typeof x === 'bigint') {\n return `BigInt(${x})`;\n }\n else {\n return JSON.stringify(x);\n }\n}\n/**\n * Encode a array of values\n * @returns {Buffer} serialised value\n */\nexport function encode(argTypes, args) {\n if (args.length < argTypes.length) {\n throw Error('Wrong number of message arguments');\n }\n const typeTable = new TypeTable();\n argTypes.forEach(t => t.buildTypeTable(typeTable));\n const magic = Buffer.from(magicNumber, 'utf8');\n const table = typeTable.encode();\n const len = lebEncode(args.length);\n const typs = Buffer.concat(argTypes.map(t => t.encodeType(typeTable)));\n const vals = Buffer.concat(zipWith(argTypes, args, (t, x) => {\n if (!t.covariant(x)) {\n throw new Error(`Invalid ${t.display()} argument: ${toReadableString(x)}`);\n }\n return t.encodeValue(x);\n }));\n return blobFromBuffer(Buffer.concat([magic, table, len, typs, vals]));\n}\n/**\n * Decode a binary value\n * @param retTypes - Types expected in the buffer.\n * @param bytes - hex-encoded string, or buffer.\n * @returns Value deserialised to JS type\n */\nexport function decode(retTypes, bytes) {\n const b = new Pipe(bytes);\n if (bytes.byteLength < magicNumber.length) {\n throw new Error('Message length smaller than magic number');\n }\n const magic = safeRead(b, magicNumber.length).toString();\n if (magic !== magicNumber) {\n throw new Error('Wrong magic number: ' + magic);\n }\n function readTypeTable(pipe) {\n const typeTable = [];\n const len = Number(lebDecode(pipe));\n for (let i = 0; i < len; i++) {\n const ty = Number(slebDecode(pipe));\n switch (ty) {\n case -18 /* Opt */:\n case -19 /* Vector */: {\n const t = Number(slebDecode(pipe));\n typeTable.push([ty, t]);\n break;\n }\n case -20 /* Record */:\n case -21 /* Variant */: {\n const fields = [];\n let objectLength = Number(lebDecode(pipe));\n let prevHash;\n while (objectLength--) {\n const hash = Number(lebDecode(pipe));\n if (hash >= Math.pow(2, 32)) {\n throw new Error('field id out of 32-bit range');\n }\n if (typeof prevHash === 'number' && prevHash >= hash) {\n throw new Error('field id collision or not sorted');\n }\n prevHash = hash;\n const t = Number(slebDecode(pipe));\n fields.push([hash, t]);\n }\n typeTable.push([ty, fields]);\n break;\n }\n case -22 /* Func */: {\n for (let k = 0; k < 2; k++) {\n let funcLength = Number(lebDecode(pipe));\n while (funcLength--) {\n slebDecode(pipe);\n }\n }\n const annLen = Number(lebDecode(pipe));\n safeRead(pipe, annLen);\n typeTable.push([ty, undefined]);\n break;\n }\n case -23 /* Service */: {\n let servLength = Number(lebDecode(pipe));\n while (servLength--) {\n const l = Number(lebDecode(pipe));\n safeRead(pipe, l);\n slebDecode(pipe);\n }\n typeTable.push([ty, undefined]);\n break;\n }\n default:\n throw new Error('Illegal op_code: ' + ty);\n }\n }\n const rawList = [];\n const length = Number(lebDecode(pipe));\n for (let i = 0; i < length; i++) {\n rawList.push(Number(slebDecode(pipe)));\n }\n return [typeTable, rawList];\n }\n const [rawTable, rawTypes] = readTypeTable(b);\n if (rawTypes.length < retTypes.length) {\n throw new Error('Wrong number of return values');\n }\n const table = rawTable.map(_ => Rec());\n function getType(t) {\n if (t < -24) {\n throw new Error('future value not supported');\n }\n if (t < 0) {\n switch (t) {\n case -1:\n return Null;\n case -2:\n return Bool;\n case -3:\n return Nat;\n case -4:\n return Int;\n case -5:\n return Nat8;\n case -6:\n return Nat16;\n case -7:\n return Nat32;\n case -8:\n return Nat64;\n case -9:\n return Int8;\n case -10:\n return Int16;\n case -11:\n return Int32;\n case -12:\n return Int64;\n case -13:\n return Float32;\n case -14:\n return Float64;\n case -15:\n return Text;\n case -16:\n return Reserved;\n case -17:\n return Empty;\n case -24:\n return Principal;\n default:\n throw new Error('Illegal op_code: ' + t);\n }\n }\n if (t >= rawTable.length) {\n throw new Error('type index out of range');\n }\n return table[t];\n }\n function buildType(entry) {\n switch (entry[0]) {\n case -19 /* Vector */: {\n const ty = getType(entry[1]);\n return Vec(ty);\n }\n case -18 /* Opt */: {\n const ty = getType(entry[1]);\n return Opt(ty);\n }\n case -20 /* Record */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n const record = Record(fields);\n const tuple = record.tryAsTuple();\n if (Array.isArray(tuple)) {\n return Tuple(...tuple);\n }\n else {\n return record;\n }\n }\n case -21 /* Variant */: {\n const fields = {};\n for (const [hash, ty] of entry[1]) {\n const name = `_${hash}_`;\n fields[name] = getType(ty);\n }\n return Variant(fields);\n }\n case -22 /* Func */: {\n return Func([], [], []);\n }\n case -23 /* Service */: {\n return Service({});\n }\n default:\n throw new Error('Illegal op_code: ' + entry[0]);\n }\n }\n rawTable.forEach((entry, i) => {\n const t = buildType(entry);\n table[i].fill(t);\n });\n const types = rawTypes.map(t => getType(t));\n const output = retTypes.map((t, i) => {\n return t.decodeValue(b, types[i]);\n });\n // skip unused values\n for (let ind = retTypes.length; ind < types.length; ind++) {\n types[ind].decodeValue(b, types[ind]);\n }\n if (b.buffer.length > 0) {\n throw new Error('decode: Left-over bytes');\n }\n return output;\n}\n// Export Types instances.\nexport const Empty = new EmptyClass();\nexport const Reserved = new ReservedClass();\nexport const Bool = new BoolClass();\nexport const Null = new NullClass();\nexport const Text = new TextClass();\nexport const Int = new IntClass();\nexport const Nat = new NatClass();\nexport const Float32 = new FloatClass(32);\nexport const Float64 = new FloatClass(64);\nexport const Int8 = new FixedIntClass(8);\nexport const Int16 = new FixedIntClass(16);\nexport const Int32 = new FixedIntClass(32);\nexport const Int64 = new FixedIntClass(64);\nexport const Nat8 = new FixedNatClass(8);\nexport const Nat16 = new FixedNatClass(16);\nexport const Nat32 = new FixedNatClass(32);\nexport const Nat64 = new FixedNatClass(64);\nexport const Principal = new PrincipalClass();\nexport function Tuple(...types) {\n return new TupleClass(types);\n}\nexport function Vec(t) {\n return new VecClass(t);\n}\nexport function Opt(t) {\n return new OptClass(t);\n}\nexport function Record(t) {\n return new RecordClass(t);\n}\nexport function Variant(fields) {\n return new VariantClass(fields);\n}\nexport function Rec() {\n return new RecClass();\n}\nexport function Func(args, ret, annotations = []) {\n return new FuncClass(args, ret, annotations);\n}\nexport function Service(t) {\n return new ServiceClass(t);\n}\n//# sourceMappingURL=idl.js.map","import * as base64Arraybuffer from 'base64-arraybuffer';\n/* tslint:disable */\n/* eslint-disable */\nlet wasm;\n// This WASM is generated from the BLS Rust code of the Agent RS (see\n// http://github.com/dfinity/agent-rs/)\n// Once the WASM is compiled, simply base64 encode it and include it in this string.\nconst wasmBytesBase64 = `\n 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\n g8AAEF8CQAJAIAZB6AFqEFoNACAGQShqEIQBDQAgBkGIPWoQS0EAIQcgBkGIwwBqQTgQchogBkG4IWpBOBByGiAGQYjA\n AGoQSyAGQcjEAGoQSyAGQcjJAGoQSyAGQcjMAGoQSyAGQagGahBLIAZBsAxqEEsgBkHIzwBqEEsgBkHQ1QBqEEsgBkHY\n 2wBqEEsgBkG4FWoQSyAGQZgjaiAGQcjJAGpBwAEQZxogBkHYJGogBkHIzABqQcABEGcaIAZBmCZqIAZBqAZqQcABEGca\n IAZB2CdqIAZBsAxqQcABEGcaIAZBmClqIAZByM8AakHAARBnGiAGQdgqaiAGQdDVAGpBwAEQZxogBkGYLGogBkHY2wBq\n QcABEGcaIAZB2C1qIAZBuBVqQcABEGcaIAZBuBVqQecAEHIaIAZBiMAAaiAGQShqEH8gBkGIwABqEBggBkGYI2ogBkEo\n ahB/A0AgB0HACkYEQCAGQbghaiAGQegBahBrIAYpA7ghIRcgBkG4IWpBARCdASAGQbghahBEIAYpA7ghIRYgBkGIwwBq\n IAZBuCFqEGsgBkGIwwBqQQEQnQEgBkGIwwBqEEQgBkG4IWogBkGIwwBqIBdCAoGnEE8gBkGIwABqIAZBKGogFkICgacQ\n bSAGQcjEAGogBkGIwABqEH8gBkG4IWoQKUEDaiIJQQJ2IgdBAWohAkEAIQgCQAJAAkADQAJAIAZBuCFqQQUQjAEhAyAC\n IAhGBEAgCUGYA0kNASACQecAQbCEwAAQPAALIAhB5wBGDQIgBkG4FWogCGogA0FwaiIDOgAAIAZBuCFqIANBGHRBGHUQ\n ngEgBkG4IWoQRCAGQbghakEEEDsgCEEBaiEIDAELCyAGQbgVaiACaiADOgAAIANBGHRBGHVBf2oiA0EBdiECIANBD0sN\n ASAGQYg9aiAGQZgjaiACQcABbGoQfwNAIAdBf0YEQCAGQYg9aiAGQcjEAGoQcyAGQZgjaiAGQYg9akHAARBnGgwICyAH\n QeYASw0DIAZBiMAAaiAGQZgjaiAGQbgVaiAHaiwAABAfIAdBf2ohByAGQYg9ahAYIAZBiD1qEBggBkGIPWoQGCAGQYg9\n ahAYIAZBiD1qIAZBiMAAahAMDAALAAtB5wBB5wBBoITAABA8AAsgAkEIQcCEwAAQPAALIAdB5wBB0ITAABA8AAUgBkHI\n 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\n UtcEAKAIAIgFBASACdCICcQRAIAAoAggMAQtB1LXBACABIAJyNgIAIAALIQEgACAENgIIIAEgBDYCDCAEIAA2AgwgBCAB\n NgIIC0EAIQVB6LjBACgCACIAIAZNDQBB6LjBACAAIAZrIgI2AgBB8LjBAEHwuMEAKAIAIgEgBmoiADYCACAAIAJBAXI2A\n gQgASAGQQNyNgIEIAFBCGoPCyAFDwsgASAHNgIYIAMoAhAiAARAIAEgADYCECAAIAE2AhgLIANBFGooAgAiAEUNACABQR\n RqIAA2AgAgACABNgIYCwJAIAVBEE8EQCADIAZBA3I2AgQgAyAGaiIEIAVBAXI2AgQgBCAFaiAFNgIAQeS4wQAoAgAiAAR\n AIABBA3YiAkEDdEHctcEAaiEAQey4wQAoAgAhBwJ/QdS1wQAoAgAiAUEBIAJBH3F0IgJxBEAgACgCCAwBC0HUtcEAIAEg\n AnI2AgAgAAshAiAAIAc2AgggAiAHNgIMIAcgADYCDCAHIAI2AggLQey4wQAgBDYCAEHkuMEAIAU2AgAMAQsgAyAFIAZqI\n gBBA3I2AgQgACADaiIAIAAoAgRBAXI2AgQLIANBCGoLtA8BA38jAEGAC2siAiQAIAJBCGoQSyACQcgBakE4EHIaIAJBAT\n YCgAIgAkGIAmpBOBByGiACQQE2AsACIAJByAJqQTgQchogAkEBNgKAAyACQYgDakE4EHIaIAJBATYCwAMgAkHIA2pBOBB\n yGiACQQE2AoAEIAJBiARqQQEQigEgAkHIBGpBOBByGiACQQE2AoAFIAJBiAVqQTgQchogAkEBNgLABSACQcgFaiABEIUB\n IAJBiAZqQTgQchogAkEBNgLABiACQcgGakE4EHIaIAJBATYCgAcgAkGIB2pBOBByGiACQQE2AsAHIAJByAdqQTgQchogA\n kEBNgKACCACQcgFahBYIQMgAkHICWpB4ITAABBfIAJBiApqIAJByAlqEIsBIAJByAFqIAJBiApqEKUBIAJByAlqQZiFwA\n AQXyACQYgKaiACQcgJahCLASACQYgCaiACQYgKahClASACQcgFahADIAJByAVqQQsQUiACQYgGaiACQcgFahClASACQYg\n GaiACQYgEahB4IAJBiAZqEEQgAkGIBmogAkHIBWoQSCACQYgFaiACQcgBahClASACQYgFaiACQYgGahBIIAJBiAZqIAJB\n iARqEHggAkGIBmoQRCACQYgGaiACQYgCahBIIAJBiAZqEEEgAkGIBmoQRCACQYgDaiACQYgGahClASACQcgDaiACQcgFa\n hClASACQcgDaiACQYgDahBIIAJByAdqIAJBiANqEKUBIAJByAdqEAMgAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgGai\n ACQcgBahClASACQYgGaiACQcgGahBIIAJByAdqIAJBiAZqEHggAkHIB2oQRCACQcgHaiACQYgDahBIIAJByAZqIAJBiAV\n qEEggAkGIBmogAkGIAmoQpQEgAkGIBmogAkHIBmoQSCACQcgHaiACQYgGahB4IAJByAdqEEQgAkGIBmogAkHIB2oQpQEg\n AkGIBmogAkGIBWoQSCACQYgGaiACQYgHahBcIQQgAkGIBWogAkGIBmoQpQEgAkGIBWogAkGIB2oQNCACQYgFaiACQcgHa\n hBIIAJBiANqIAJBiAVqEEggAkHIA2ogAkGIBWoQSCACQcgFaiABEEggAkHIBmogAkGIBWoQpQEgAkHIBmoQAyACQYgFai\n ACQcgGahClASACQYgFaiACQcgFahBIIAJByAVqIAJBiAZqEKUBIAJByAVqQQsQUiACQcgJakHQhcAAEF8gAkGICmogAkH\n ICWoQiwEgAkHIAmogAkGICmoQpQEgAkHIAmogAkGIB2oQSCACQYgDaiACQcgDakEBIARrIgEQeSACQcgGaiACQYgFaiAB\n EHkgAkGIBmogAkHIBWogARB5IAJBiAdqIAJByAJqIAEQeSACQYgKaiACQYgGaiACQYgHahAjIAJByARqIAJBiApqEKUBI\n AJByARqIAJByAZqEEggAkHIBGoQWCEBIAJBiAZqIAJByARqEKUBIAJBiAZqEEEgAkGIBmoQRCACQcgEaiACQYgGaiABIA\n NzEHkgAkGICmpBiIbAABBfIAJBiAhqIAJBiApqEIsBQTghAQNAIAFBoAVGRQRAIAJBiAhqIAJBiANqEEggAkHICWogAUG\n IhsAAahBfIAFBOGohASACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQYgIaiACQYgGahB4IAJBiAhqEEQMAQsL\n IAJByAhqIAJBiANqEIUBIAJByAlqQaiLwAAQXyACQYgKaiACQcgJahCLASACQYgGaiACQYgKahClASACQcgIaiACQYgGa\n hB4IAJByAhqEERBACEBA0AgAUH4A0ZFBEAgAkHICGogAkGIA2oQSCACQcgJaiABQeCLwABqEF8gAUE4aiEBIAJBiApqIA\n JByAlqEIsBIAJBiAZqIAJBiApqEKUBIAJByAhqIAJBiAZqEHggAkHICGoQRAwBCwsgAkGICmpB2I/AABBfIAJBiAlqIAJ\n BiApqEIsBQQAhAQNAIAFByAZGBEACQCACQcgJaiACQYgDahCFASACQcgKakHYlsAAEF8gAkGICmogAkHICmoQiwEgAkGI\n BmogAkGICmoQpQEgAkHICWogAkGIBmoQeCACQcgJahBEQQAhAQNAIAFBkAZGDQEgAkHICWogAkGIA2oQSCACQcgKaiABQ\n ZCXwABqEF8gAUE4aiEBIAJBiApqIAJByApqEIsBIAJBiAZqIAJBiApqEKUBIAJByAlqIAJBiAZqEHggAkHICWoQRAwACw\n ALBSACQYgJaiACQYgDahBIIAJByAlqIAFBkJDAAGoQXyABQThqIQEgAkGICmogAkHICWoQiwEgAkGIBmogAkGICmoQpQE\n gAkGICWogAkGIBmoQeCACQYgJahBEDAELCyACQYgJaiACQcgEahBIIAJBiAZqIAJBiAhqEKUBIAJBiAZqIAJByAlqEEgg\n AkEIaiACQYgGahClASACQYgGaiACQYgJahClASACQYgGaiACQcgIahBIIAJByABqIAJBiAZqEKUBIAJBiAZqIAJByAhqE\n KUBIAJBiAZqIAJByAlqEEggAkGIAWogAkGIBmoQpQEgACACQQhqQcABEGcaIAJBgAtqJAALzQ0CE38IfiMAQYADayIBJA\n AgADQCOCIUIBR+QoCAgBBaBEAgABASCyABQeABakHoABByGiABQcgBaiAAKQMAIhggGEI/hyIZIBggGRAxIAEgASkDyAE\n iFEL//////////wODNwPYASABQdABaikDACIXQgaGIBRCOoiEIRUgF0I6iCEaIABBCGoiCyEFIAAhBkEBIQcDQCAHQQZP\n BEAgAEEYaiEMIABBKGohCyAAQRBqIQcgACkDMCEYQQQhBkEAIQkgAUGgAWohDUEDIQpBAiEIQQchBQJAAkADQCAFQQpLD\n QIgBiAIIAYgCEsbIQ4gBiAKIAYgCksbQQN0QWhqIQ8gAUGYAWogBUEDdCIQIABqQVBqKQMAIhQgFEI/hyAYIBhCP4ciGR\n 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\n OBByGiACQQE2AvgMIAJBgA1qQTgQchogAkG4DWpBATYCACACQYAIakE4EHIaIAJBATYCuAggAkHACGpBOBByGiACQfgIa\n kEBNgIAIAJBgApqIABBgANqIgMQXiACQYAIaiACQYAKahCQASACQYAKaiABQYADaiIFEF4gAkGACGogAkGACmoQDyACQc\n AMahCpASAERQRAIAJBgApqIAMQXiACQcAMaiACQYAKahCQASACQYAKaiABQYACahBeIAJBwAxqIAJBgApqEA8LIAAoAoA\n GQQRHBEAgAkGACmogAEGAAmoQXiACQcAMaiACQYAKahCQASACQYAKaiAFEF4gAkHADGogAkGACmoQDwsgAkGABGogAkHA\n DGogAkGACGoQoQEgAkGABGoQZgsgAkGACGogABCOASACQYAKaiABEI4BIAJBgAhqIABBgAJqIgQQlgEgAkGACGoQrAEgA\n kGACmogAUGAAmoiBRCWASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAQQkgEgAkGACG\n ogAEGABGoiAxCWASACQYAIahCsASACQYAKaiAFEJIBIAJBgApqIAFBgARqIgUQlgEgAkGACmoQrAEgAkGABmogAkGACGo\n QkgEgAkGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAI\n ahCWASAEIAJBgAJqEJIBIAQgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQ\n YAIaiADEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBRCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIA\n JBgAhqEJYBIAJBgAhqIAMQkgEgAkGACGogBRAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgAyACQYAEahCSASADIAJBgAp\n qEJYBIAJBgAZqIAJBgApqEJYBIAJBgAhqEGYgBCACQYAIahCWAQwDCyAAIAEQBgwECyACQcAMaiABQYAFahBeIAJBgAxq\n IAJBwAxqQcAAEGcaIAJBgAZqIAJBgAxqEKMBCyACQYAGahBmIAJBgAhqIAIQkgEgAkGACGoQKyACQYACaiACQYAIahCWA\n SAFIAJBgAJqEJIBIAJBgARqIAJBgAhqEJIBIAJBgAhqIAAQkgEgAkGACGogAxCWASACQYAIahCsASACQYAKaiABEJIBIA\n JBgApqIAFBgARqEJYBIAJBgApqEKwBIAJBgAhqIAJBgApqEBkgAkGABGogAkGACGoQlgEgAkGACGogAxCSAQJAIARBAkc\n EQCACQcAMaiABQYAFahBeIAJBgAhqIAJBwAxqEKIBDAELIAJBwAxqIAFBgAVqEF4gAkGADGogAkHADGpBwAAQZxogAkGA\n CGogAkGADGoQowELIAJBgAhqEGYgAkGACmogAkGACGoQkgEgAkGACmoQKyADIAJBgARqEJIBIAMgAkGACmoQlgEgAkGAB\n mogAkGACmoQlgEgAkGACGoQZiAFIAJBgAhqEJYBCyACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIABBBT\n YCgAYgABCZAQwBCyAAIAEQbAsgAkHADWokAAuaCQIPfwt+IwBBwAJrIgIkACACQeAAakGgp8AAEF8gAEE4EHIhDCACQZg\n BakHwABByGiACQZACakEwEHIaIAwQdCACIAEpAwAiFEL9//P/z///+QF+Qv//////////A4MiETcDiAIgAkHQAGogEUIA\n IAIpA2AiGCAYQj+HIhoQMSAUIAIpA1AiEXwiFiARVK0gAkHYAGopAwAgFEI/h3x8IhRCOocgASkDCCIRQj+HfCARIBRCB\n oYgFkI6iIQiEXwiEiARVK18IRNBASEDAkADQAJAIANBB0YEQCACQZACaiEJIAJB6ABqIQpBByEEIAJB4ABqIQ0gAkGIAm\n ohDkEGIQ8MAQsgA0EBdiIAQQFqIQUgCiAAayEGIAkgAEEDdCIHayEAIAdBCGohCCACQUBrIANBA3QiBCACQeAAamopAwA\n iFiAWQj+HIhQgAikDiAIiESARQj+HEDEgAkHIAGopAwAgEiAVfCIRIBJUrSATIBd8fHwgESACKQNAfCITIBFUrXwhEiAD\n QQFqIQcDQCADIAVNBEAgAkGIAmogBGogE0L9//P/z///+QF+Qv//////////A4MiETcDACACQTBqIBFCACAYIBoQMSACQ\n SBqIBFCACAWIBQQMSACQZgBaiADQQR0aiIAIAJBKGopAwAiGzcDCCAAIAIpAyAiGTcDACACKQMwIhEgE3wiFiARVK0gAk\n E4aikDACASfHwiFEI6hyABIAdBA3RqKQMAIhFCP4d8IBEgFEIGhiAWQjqIhCIRfCISIBFUrXwhEyAVIBl8IhUgGVStIBc\n gG3x8IRcgCUEIaiEJIApBAWohCiAHIQMMAwsgBkEGSw0DIAJBEGogAkHgAGogCGopAwAgAkHgAGogAGopAwB9IhEgEUI/\n hyACQYgCaiAAaikDACACQYgCaiAIaikDAH0iESARQj+HEDEgAikDECIRIBN8IhMgEVStIAJBGGopAwAgEnx8IRIgBUEBa\n iEFIABBeGohACAGQX9qIQYgCEEIaiEIDAALAAsLA0ACQCAEQQ1HBEAgDyAEQQF2IgBrIQUgDiAAQQN0IgtrIRAgDSALay\n EIIBMgF3wgEiAVfCITIBJUrXwhEiAEQQFqIQdBMCEAIAkhBiAKIQMDQCAAIAtGDQIgBUEGTQRAIAIgAyALaikDACAAIAh\n qKQMAfSIRIBFCP4cgACAQaikDACAGIAtqKQMAfSIRIBFCP4cQMSACKQMAIhEgE3wiEyARVK0gAkEIaikDACASfHwhEiAF\n QX9qIQUgBkEIaiEGIANBCGohAyAAQXhqIQAMAQsLIAVBB0HknsAAEDwACyAMIBJC//////////8DgzcDMCACQcACaiQAD\n wsgBEEDdCAMakFIaiATQv//////////A4M3AwAgEkI6hyABIAdBA3RqKQMAIhFCP4d8IBEgEkIGhiATQjqIhCIRfCISIB\n FUrXwhEyAXIARBBHQgAmpBOGoiAEEIaikDAH0gFSAAKQMAIhFUrX0hFyAOQQhqIQ4gDUEIaiENIA9BAWohDyAVIBF9IRU\n gByEEDAALAAsgBkEHQdSewAAQPAAL+QkBBH8jAEGACWsiAiQAIAJBgAhqIAAQXiACIAJBgAhqEF4gAkGACGogAEGAAWoi\n BBBeIAJBgAFqIAJBgAhqEF4gAkGACGogARBeIAIgAkGACGoQDyACQYAIaiABQYABaiIFEF4gAkGAAWogAkGACGoQDyAAK\n AKABiEDAkACQCABKAKABkECRwRAIANBAkYNASACQYAIaiAAQYAFahBeIAJBgAJqIAJBgAhqEF4gAkGACGogAUGABWoQXi\n ACQYACaiACQYAIahAPDAILIANBAkYEQCACQYAIaiAAQYAFahBeIAJBgAdqIAJBgAhqQcAAEGcaIAJBgAZqIAJBgAdqEIU\n BIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGABmogAkGAB2oQSCACQYAIakE4EHIaIAJBATYCuAggAkHA\n CGpBOBByIAJB+AhqQQE2AgAgAkGACGogAkGABmoQpQEQsgEgAkGAAmogAkGACGpBgAEQZxoMAgsgAkGACGogAEGABWoQX\n iACQYACaiACQYAIahBeIAJBgAhqIAFBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAEMAQsgAkGACG\n ogAUGABWoQXiACQYACaiACQYAIahBeIAJBgAhqIABBgAVqEF4gAkGAB2ogAkGACGpBwAAQZxogAkGAAmogAkGAB2oQoAE\n LIAJBgAhqIAAQXiACQYADaiACQYAIahBeIAJBgAhqIAEQXiACQYAEaiACQYAIahBeIAJBgAhqIAQQXiACQYADaiACQYAI\n ahCVASACQYADahCoASACQYAIaiAFEF4gAkGABGogAkGACGoQlQEgAkGABGoQqAEgAkGABWogAkGAA2oQXiACQYAFaiACQ\n YAEahAPIAJBgAZqIAIQXiACQYAGaiACQYABahCVASACQYAGahA6IAJBgAVqIAJBgAZqEJUBIAJBgAhqIAAQXiACQYADai\n ACQYAIahCQASACQYAIaiAAQYAFaiIDEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogARBeIAJBgARqIAJBgAh\n qEJABIAJBgAhqIAFBgAVqIgEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAHaiACQYADahBeIAJBgAdqIAJBgARq\n EA8gAkGABmogAhCQASACQYAGaiACQYACahCVASACQYAGahA6IAJBgAdqIAJBgAZqEJUBIAJBgAhqIAQQXiACQYADaiACQ\n YAIahCQASACQYAIaiADEF4gAkGAA2ogAkGACGoQlQEgAkGAA2oQqAEgAkGACGogBRBeIAJBgARqIAJBgAhqEJABIAJBgA\n hqIAEQXiACQYAEaiACQYAIahCVASACQYAEahCoASACQYAIaiACQYADahBeIAJBgAhqIAJBgARqEA8gAkGABmogAkGAAWo\n QkAEgAkGABmogAkGAAmoQlQEgAkGABmoQOiACQYAIaiACQYAGahCVASACQYABahBVIAIgAkGAAWoQlQEgACACIAJBgAVq\n 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\n GogAkGABWoQfSACQYAEahCoASACQYAFaiAAEJABIAJBgAVqIAQQlQEgAkGABWoQqAEgAkGABmogARBeIAJBgAZqIAYQlQ\n EgAkGABmoQqAEgAkGABWogAkGABmoQDyACQYAGaiACEJABIAJBgAZqIAJBgAJqEJUBIAJBgAZqIAJBgAVqELUBIAJBgAZ\n qEKgBIAJBgAVqIAIQkAEgAkGABWogAhCVASACIAJBgAVqEJUBIAIQqAEgAkGAAmpBDBCfASACQYACahBVIAJBgAJqEKgB\n IAJBgAdqIAJBgAFqEF4gAkGAB2ogAkGAAmoQlQEgAkGAB2oQqAEgAkGAAWogAkGAAmoQfSACQYABahCoASACQYAGakEME\n J8BIAJBgAZqEFUgAkGABmoQqAEgAkGABWogAkGABmoQkAEgAkGABWogAkGABGoQDyACQYACaiACQYADahCQASACQYACai\n ACQYABahAPIAJBgAVqIAJBgAJqELUBIAJBgAZqIAIQDyACQYABaiACQYAHahAPIAJBgAZqIAJBgAFqEJUBIAIgAkGAA2o\n QDyACQYAHaiACQYAEahAPIAJBgAdqIAIQlQEgACACQYAFahCQASAAEKgBIAMgAkGABmoQkAEgAxCoASAEIAJBgAdqEJAB\n IAQQqAEgAkGACGokAAv2BQEFfyMAQYAEayICJAAgAiAAEIUBIAIgARBIIAJBQGsgAEFAayIDEIUBIAJBQGsgAUFAayIFE\n EggAkGAAWogAEGAAWoiBBCFASACQYABaiABQYABaiIGEEggAkHAAWogABCFASACQcABaiADEHggAkHAAWoQRCACQYACai\n ABEIUBIAJBgAJqIAUQeCACQYACahBEIAJBwAFqIAJBgAJqEEggAkGAAmogAhClASACQYACaiACQUBrEHggAkHAAWogAkG\n AAmoQgAEgAkHAAWoQRCACQYACaiADEKUBIAJBgAJqIAQQeCACQYACahBEIAJBwAJqIAUQhQEgAkHAAmogBhB4IAJBwAJq\n EEQgAkGAAmogAkHAAmoQSCACQcACaiACQUBrEKUBIAJBwAJqIAJBgAFqEHggAkGAAmogAkHAAmoQgAEgAkGAAmoQRCACQ\n cACaiAAEKUBIAJBwAJqIAQQeCACQcACahBEIAJBgANqIAEQhQEgAkGAA2ogBhB4IAJBgANqEEQgAkHAAmogAkGAA2oQSC\n ACQYADaiACEKUBIAJBgANqIAJBgAFqEHggAkGAA2ogAkHAAmoQswEgAkGAA2oQRCACQcACaiACEKUBIAJBwAJqIAIQeCA\n CIAJBwAJqEHggAhBEIAJBgAFqQQwQUiACQcADaiACQUBrEIUBIAJBwANqIAJBgAFqEHggAkHAA2oQRCACQUBrIAJBgAFq\n EIABIAJBQGsQRCACQYADakEMEFIgAkHAAmogAkGAA2oQpQEgAkHAAmogAkGAAmoQSCACQYABaiACQcABahClASACQYABa\n iACQUBrEEggAkHAAmogAkGAAWoQswEgAkGAA2ogAhBIIAJBQGsgAkHAA2oQSCACQYADaiACQUBrEHggAiACQcABahBIIA\n JBwANqIAJBgAJqEEggAkHAA2ogAhB4IAAgAkHAAmoQpQEgABBEIAMgAkGAA2oQpQEgAxBEIAQgAkHAA2oQpQEgBBBEIAJ\n BgARqJAALxQUBBH8jAEHwEmsiACQAIAAQOEF/IQEgABCIAUUEQCAAQYADakE4EHIaIABBuANqQTgQchogAEG4A2ogAEGA\n A2oQVCAAQfAKakG4gMAAEF8gAEHwDWpB8IDAABBfIABB8ANqIABB8ApqIABB8A1qEEkgAEHwBGpBOBByGiAAQQE2AqgFI\n ABBsAVqQTgQchogAEHoBWpBATYCACAAQfAFakE4EHIaIABBATYCqAYgAEGwBmpBOBByGiAAQegGakEBNgIAIABB8AZqQT\n gQchogAEEBNgKoByAAQbAHakE4EHIaIABB6AdqQQE2AgBBf2ohAyAAQfAHahAqIABB8AdqIAAQfiAAQfAKahAqIABB8Ap\n qIABB8AdqEH4gAEHwDWoQKiAAQfANaiAAQfAHahB+IABB8A1qEJwBAkACQAJAA0AgAiEBIANBAkkNAyAAQfAKaiAAQfAE\n aiAAQfAFaiAAQfAGahAlIAFBxABNBEAgAEHwEGogAEHwBGogAEHwBWogAEHwBmoQRiABQQh0QdCrwABqIABB8BBqEJIBI\n AFBAWohAgJAAkAgAEG4A2ogA0F/aiIDEFcgAEGAA2ogAxBXa0EBag4DAQMAAwsgAEHwCmogAEHwB2ogAEHwBGogAEHwBW\n ogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYgAkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQI\n MAgsgAEHwCmogAEHwDWogAEHwBGogAEHwBWogAEHwBmoQHiABQcMASw0DIABB8BBqIABB8ARqIABB8AVqIABB8AZqEEYg\n AkEIdEHQq8AAaiAAQfAQahCSASABQQJqIQIMAQsLIAFBxQBBvIHAABA8AAtBxQBBxQBBzIHAABA8AAtBxQBBxQBB3IHAA\n BA8AAtBACEBCyAAQfASaiQAIAEL8gQBBH8jAEGADGsiAiQAIAIgABCOASACQYACahAvIAJBgARqIABBgAJqIgMQjgEgAk\n GABmoQLyACQYAIaiAAEI4BIAJBgApqIAEQjgEgAiABEBkgAkGABGogAUGAAmoiBBAZIAJBgAhqIAMQlgEgAkGACmogBBC\n WASACQYAIahCsASACQYAKahCsASACQYACaiACQYAIahCSASACQYACaiACQYAKahAZIAJBgAhqIAMQkgEgAkGACGogAEGA\n BGoiBRCWASACQYAKaiAEEJIBIAJBgApqIAFBgARqIgQQlgEgAkGACGoQrAEgAkGACmoQrAEgAkGABmogAkGACGoQkgEgA\n kGABmogAkGACmoQGSACQYAIaiACEJIBIAJBgAhqECsgAkGACmogAkGABGoQkgEgAkGACmoQKyACQYACaiACQYAIahCWAS\n ADIAJBgAJqEJIBIAMgAkGACmoQlgEgAkGABmogAkGACmoQlgEgAkGABGogAkGACGoQlgEgAkGACGogABCSASACQYAIaiA\n FEJYBIAJBgAhqEKwBIAJBgApqIAEQkgEgAkGACmogBBCWASACQYAKahCsASACQYAIaiACQYAKahAZIAJBgARqIAJBgAhq\n EJYBIAJBgAhqIAUQkgEgAkGACGogBBAZIAJBgApqIAJBgAhqEJIBIAJBgApqECsgBSACQYAEahCSASAFIAJBgApqEJYBI\n AJBgAZqIAJBgApqEJYBIAJBgAhqEGYgAyACQYAIahCWASACQYAGahCsASACQYAGahBmIAAgAhCSASAAIAJBgAZqEJYBIA\n BBBTYCgAYgABCZASACQYAMaiQAC68EAQV/IwBBkAZrIgIkACAAQUBrIQQCQCABQfgAaigCACABKAI4aqwgAEH4AGooAgA\n iAyAAKAI4IgVqrH5CgICAEFMNACAFQQJOBH8gABASIAAoAngFIAMLQQJIDQAgBBASCyACQaCnwAAQX0EAIQMgAkE4akHw\n ABByGiABQUBrIQUDQCADQThGBEAgAkHwAGohBkEAIQMDQCADQThGRQRAIAMgBmogAiADaikDADcDACADQQhqIQMMAQsLI\n AJBqAFqIAAQXyACQeABaiABEF8gAkGYAmogACABEAggAkGIA2ogBCAFEAggAkGoAWogBBBhIAJBqAFqEEQgAkHgAWogBR\n BhIAJB4AFqEEQgAkH4A2ogAkGoAWogAkHgAWoQCEEAIQMgAkHoBGpB8AAQchoDQCADQfAARkUEQCACQegEaiADaiACQZg\n CaiADaikDADcDACADQQhqIQMMAQsLIAJB6ARqIAJBiANqEGVBACEDA0AgA0HwAEZFBEAgAkGIA2ogA2oiASACQThqIANq\n KQMAIAEpAwB9NwMAIANBCGohAwwBCwsgAkGYAmogAkGIA2oQZSACQZgCahBFIAJB+ANqIAJB6ARqEGQgAkH4A2oQRSACQ\n dgFaiACQZgCahAFIAAgAkHYBWoQayAAQQM2AjggAkHYBWogAkH4A2oQBSAEIAJB2AVqEGsgAEECNgJ4IAJBkAZqJAAFIA\n JBOGogA2pCADcDACADQQhqIQMMAQsLC5QEAQF/IwBB0CJrIgMkACADQcAWakG4gMAAEF8gA0HIHGpB8IDAABBfIANBCGo\n gA0HAFmogA0HIHGoQSSADQYgBakE4EHIaIANBwAFqQTgQchogA0H4AWoQKgJAIAIQhAFFBEAgA0H4BGoQKiADQfgEaiAB\n EH4gA0H4BGoQSiADQfgHahBLIANB+AdqIAIQfyADQfgHahBHIANByBxqIANB+AdqEIUBIANBuAlqIANByBxqEIUBIANBy\n BxqIANBuAhqEIUBIANB+AlqIANByBxqEIUBIANBuApqECogA0G4DWoQYCADQbgKaiADQfgEahB+IANBwBNqECogA0HAE2\n ogA0H4BGoQfiADQcATahCcASADQcABaiADQYgBahBUQX9qIQIDQCACQQFNBEAgA0G4DWoQkwEgACADQbgNakGIBhBnGgw\n DBSADQbgNahAbIANBwBZqIANBuApqIANBuAlqIANB+AlqEBcCQAJAAkAgA0HAAWogAkF/aiICEFcgA0GIAWogAhBXa0EB\n ag4DAQIAAgsgA0HIHGogA0G4CmogA0H4BGogA0G4CWogA0H4CWoQFiADQcAWaiADQcgcahAGDAELIANByBxqIANBuApqI\n ANBwBNqIANBuAlqIANB+AlqEBYgA0HAFmogA0HIHGoQBgsgA0G4DWogA0HAFmoQBAwBCwALAAsgABBgCyADQdAiaiQAC8\n MDARV/A0AgAUHAAUYEQAJAIABBKGohCyAAQRRqKAIAIgwhCCAAQRBqKAIAIg0hAyAAQQxqKAIAIg4hAiAAKAIIIg8hASA\n AQRhqKAIAIhAhCiAAQRxqKAIAIhEhBCAAQSBqKAIAIhIhByAAQSRqKAIAIhMhBgNAIAchCSAEIQcgCiEEIAVBgAJGDQEg\n AiADcSEUIAIgA3MhFSAFIAtqKAIAIAVB9J7AAGooAgAgBEEadyAEQRV3cyAEQQd3cyAGaiAJIARBf3NxIAQgB3FyampqI\n gYgCGohCiAFQQRqIQUgAyEIIAIhAyABIQIgAUEedyABQRN3cyABQQp3cyAUIAEgFXFzaiAGaiEBIAkhBgwACwALBSAAIA\n FqIgNB6ABqIANBzABqKAIAIANBKGooAgAgA0EsaigCACICQRl3IAJBDndzIAJBA3ZzIANB4ABqKAIAIgJBD3cgAkENd3M\n gAkEKdnNqamo2AgAgAUEEaiEBDAELCyAAIAYgE2o2AiQgACAJIBJqNgIgIAAgByARajYCHCAAIAQgEGo2AhggACAIIAxq\n NgIUIAAgAyANajYCECAAIAIgDmo2AgwgACABIA9qNgIIC9YDAgZ/An4jAEHwAGsiASQAIAFBoKfAABBfIAFBOGogARBfI\n AAQRAJAAkACQCABAn8gACgCOCICQRBMBEAgAkF/ahA5DAELIAEpAzAiCEIBfCIHIAhUDQEgACkDMCIIQoCAgICAgICAgH\n 9RQQAgB0J/URsNAiABQThqIAggB3+nECghByABIAEpA2ggB0I6hnw3A2ggACABQThqEGIgABBEQQILIgMQLSAAQQhqIQQ\n DQCADRQ0DIAEgASkDCEI5hkKAgICAgICAgAKDIAEpAwBCAYeEIgc3AwAgASAAKQMAIAd9IgdC//////////8DgzcDOEEA\n IQIDQCAHQjqHIQcgAkEoRkUEQCABIAJqIgVBCGoiBiAFQRBqKQMAQjmGQoCAgICAgICAAoMgBikDAEIBh4QiCDcDACABI\n AJqQUBrIAIgBGopAwAgCH0gB3wiB0L//////////wODNwMAIAJBCGohAgwBCwsgASABKQMwQgGHIgg3AzAgASAAKQMwIA\n h9IAd8Igc3A2ggACABQThqIAdCP4enQQFqEE8gA0F/aiEDDAALAAtBoKLAAEEZQbyiwAAQWwALQdCiwABBH0G8osAAEFs\n ACyAAQQE2AjggAUHwAGokAAuhAwEBfyMAQZADayIGJAAgBkEIakHAABByGiAGQcgAakGoAhByGiAGQcgAahBDA0AgAQRA\n IAZByABqQQAQPiABQX9qIQEMAQUCQCACBEAgBkHIAGogAiADEHoLIAQEQCAGQcgAaiAEIAUQegsgBkGIA2pCADcDACAGQ\n YADakIANwMAIAZB+AJqQgA3AwAgBkIANwPwAiAGKAJIIQEgBigCTCECIAZByABqQYABED4DQCAGKAJIQf8DcUHAA0ZFBE\n AgBkHIAGpBABA+DAELCyAGQawBaiABNgIAIAZBqAFqIAI2AgAgBkHIAGoQEUEAIQJBACEBA0AgAUEgRkUEQCAGQfACaiA\n BaiABQXxxIAZqQdAAaigCACACQX9zQRhxdjoAACACQQhqIQIgAUEBaiEBDAELCyAGQcgAahBDQQAhAQNAIAFBIEZFBEAg\n BkEIaiABaiAGQfACaiABai0AADoAACABQQFqIQEMAQsLQQAhAQNAIAFBIEYNASAAIAFqIAZBCGogAWotAAA6AAAgAUEBa\n iEBDAALAAsLCyAGQZADaiQAC6EDAQN/IwBBgAZrIgEkACABIABBgAFqIgMQXiABQYABaiADEF4gAUGAAWoQMiABQYACai\n ABEF4gAUGAAmogAEGAAmoiAhAPIAFBgANqIAIQXiABQYADahAyIAIgAUGAAWoQkAEgAiABQYABahCVASACEKgBIAIQpwE\n gAhCnASACEKgBIAFBgANqQQwQnwEgAUGAA2oQVSABQYADahCoASABQYAEaiABQYADahBeIAFBgARqIAIQDyABQYAFaiAB\n QYABahBeIAFBgAVqIAFBgANqEJUBIAFBgAVqEKgBIAIgAUGAAmoQDyABQYACaiABQYADahCQASABQYACaiABQYADahCVA\n SABQYADaiABQYACahCVASABQYADahCoASABQYABaiABQYADahB9IAFBgAFqEKgBIAFBgAVqIAFBgAFqEA8gAUGABWogAU\n GABGoQlQEgAUGAAmogABCQASABQYACaiABEA8gACABQYABahCQASAAEKgBIAAgAUGAAmoQDyAAEKcBIAAQqAEgAyABQYA\n FahCQASADEKgBIAFBgAZqJAALhQMBBH8CQAJAIAFBgAJPBEAgAEEYaigCACEEAkACQCAAIAAoAgwiAkYEQCAAQRRBECAA\n QRRqIgIoAgAiAxtqKAIAIgENAUEAIQIMAgsgACgCCCIBIAI2AgwgAiABNgIIDAELIAIgAEEQaiADGyEDA0AgAyEFIAEiA\n kEUaiIDKAIAIgFFBEAgAkEQaiEDIAIoAhAhAQsgAQ0ACyAFQQA2AgALIARFDQIgACAAQRxqKAIAQQJ0QeS3wQBqIgEoAg\n BHBEAgBEEQQRQgBCgCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQdi1wQBB2LXBACgCAEF+IAAoAhx3cTYCAA8\n LIABBDGooAgAiAiAAQQhqKAIAIgBHBEAgACACNgIMIAIgADYCCA8LQdS1wQBB1LXBACgCAEF+IAFBA3Z3cTYCAAwBCyAC\n IAQ2AhggACgCECIBBEAgAiABNgIQIAEgAjYCGAsgAEEUaigCACIARQ0AIAJBFGogADYCACAAIAI2AhgLC7MCAQF/IwBBg\n AtrIgUkACAFEC8gBUGAAmoQLyAFQYAEahAvIAVBgAZqQTgQchogBUEBNgK4BiAFQcAGakE4EHIaIAVB+AZqQQE2AgAgBU\n GAB2pBOBByGiAFQQE2ArgHIAVBwAdqQTgQchogBUH4B2pBATYCACAFQYAIakE4EHIaIAVBATYCuAggBUHACGpBOBByGiA\n FQfgIakEBNgIAIAEgAiAFQYAGaiAFQYAHaiAFQYAIahAeIAVBgAhqIAMQoAEgBUGABmogBBCgASAFQYAJaiAFQYAGaiAF\n QYAHahCRASAFIAVBgAlqEJIBIAVBgAlqIAVBgAhqEJsBIAVBgARqIAVBgAlqEJIBIAVBgARqEGYgACAFIAVBgAJqIAVBg\n ARqEHYgAEEDNgKABiAFQYALaiQAC7ECAQF/IwBBgAtrIgQkACAEEC8gBEGAAmoQLyAEQYAEahAvIARBgAZqQTgQchogBE\n EBNgK4BiAEQcAGakE4EHIaIARB+AZqQQE2AgAgBEGAB2pBOBByGiAEQQE2ArgHIARBwAdqQTgQchogBEH4B2pBATYCACA\n EQYAIakE4EHIaIARBATYCuAggBEHACGpBOBByGiAEQfgIakEBNgIAIAEgBEGABmogBEGAB2ogBEGACGoQJSAEQYAIaiAC\n EKABIARBgAZqIAMQoAEgBEGACWogBEGABmogBEGAB2oQkQEgBCAEQYAJahCSASAEQYAJaiAEQYAIahCbASAEQYAEaiAEQ\n YAJahCSASAEQYAEahBmIAAgBCAEQYACaiAEQYAEahB2IABBAzYCgAYgBEGAC2okAAvJAgEDfyMAQcACayIBJAAgASAAQU\n BrIgMQhQEgARADIAFBQGsgAxCFASABQUBrIABBgAFqIgIQSCABQYABaiACEIUBIAFBgAFqEAMgAiABEKUBIAIgARB4IAI\n QRCACEE4gAhBOIAIQRCABQYABakEMEFIgAUHAAWogAUGAAWoQhQEgAUHAAWogAhBIIAFBgAJqIAEQhQEgAUGAAmogAUGA\n AWoQeCABQYACahBEIAIgAUFAaxBIIAFBQGsgAUGAAWoQpQEgAUFAayABQYABahB4IAFBgAFqIAFBQGsQeCABIAFBgAFqE\n IABIAEQRCABQYACaiABEEggAUGAAmogAUHAAWoQeCABQUBrIAAQpQEgAUFAayADEEggACABEKUBIAAQRCAAIAFBQGsQSC\n AAEE4gABBEIAMgAUGAAmoQpQEgAxBEIAFBwAJqJAALrQIBA38jAEGABGsiAiQAIAIgABBeIAJBgAFqIABBgAFqIgMQXiA\n CQYACakE4EHIaIAJBATYCuAIgAkHAAmpBOBByGiACQfgCakEBNgIAIAJBgANqIAMQXiACIAEQDyACQYABaiABQYABaiIE\n EA8gAkGAAmogBBCQASACQYACaiABEJUBIAJBgANqIAAQlQEgAkGAAmoQqAEgAkGAA2oQqAEgAkGAA2ogAkGAAmoQDyACQ\n YACaiACEJABIAJBgAJqEDogAkGAA2ogAkGAAmoQlQEgAkGAA2oQqAEgAkGAAmogAkGAAWoQkAEgAkGAAmoQOiADIAJBgA\n NqEJABIAMgAkGAAmoQlQEgAkGAAWoQVSAAIAJBgAFqEJABIAAgAhCVASAAEKwBIAJBgARqJAALvQIBA38jAEGACGsiASQ\n AIAEgABCOASABQYACaiAAQYAEaiICEI4BIAFBgARqIABBgAJqIgMQjgEgAUGABmoQLyAAECIgAUGABmogABCSASABQYAG\n aiAAEJYBIAAgAUGABmoQlgEgABCsASABELYBIAEQrwEgACABEJYBIAFBgAJqECIgAUGAAmoQZiABQYAGaiABQYACahCSA\n SABQYAGaiABQYACahCWASABQYACaiABQYAGahCWASABQYACahCsASABQYAEahAiIAFBgAZqIAFBgARqEJIBIAFBgAZqIA\n FBgARqEJYBIAFBgARqIAFBgAZqEJYBIAFBgARqEKwBIAMQrgEgAxCvASACELYBIAIQrwEgAyABQYACahCWASACIAFBgAR\n qEJYBIABBBTYCgAYgABCaASABQYAIaiQAC7ICAQN/IwBBgAhrIgEkACAAKAKABkEBRwRAIAEgABCOASABQYACaiAAQYAC\n aiIDEI4BIAFBgARqIABBgARqIgIQjgEgAUGABmogABCOASABECIgAUGAAmogAhAZIAFBgAJqEK8BIAFBgAJqEKwBIAFBg\n ARqECIgAUGABmogAxAZIAFBgAZqEK8BIAIgABCWASACIAMQlgEgAhCsASACECIgACABEJIBIAEgAUGAAmoQlgEgARCsAS\n ABIAFBgARqEJYBIAEgAUGABmoQlgEgARCsASABECsgAUGAAmoQZiABQYAEahBmIAAgAUGAAmoQlgEgAyABQYAEahCSASA\n DIAFBgAZqEJYBIAIgARCWASAAQQRBBSAAKAKABkF+cUECRhs2AoAGIAAQmQELIAFBgAhqJAALigIBAn8jAEHgAWsiAiQA\n IAAQRCACQQhqQTAQchogAkIBNwMAIAJBOGogABBfIAJB8ABqIAEQXyACQagBakE4EHIaIAAQdANAIAJBOGogAkHwAGoQN\n UF/TARAA0ACQCADQQBMDQAgAkHwAGpBARA7IAJBARA7IAJBqAFqIAJBOGoQayACQagBaiACQfAAahBiIAJBqAFqEEQgAk\n E4aiACQagBaiACKQPYAUI/h6dBAWoiARBPIAJBqAFqIAAQayACQagBaiACEGEgAkGoAWoQRCAAIAJBqAFqIAEQTyADQX9\n qIQMMAQsLBSACQQEQLSACQfAAakEBEC0gA0EBaiEDDAELCyACQeABaiQAC54CAQF/IwBBgA1rIgMkACADIAEQaiADEJkB\n IANBiAZqIAIQXyADQYgGahBEIANBwAZqIANBiAZqEF8gA0HABmpBAxAoGiADQcAGahBEIANB+AZqIAMQagJAIANBwAZqE\n FpFBEAgA0HABmoQKUF/aiECA0AgAkEBTQRAIANB+AZqEJoBDAMLIANB+AZqEBoCQAJAIANBwAZqIAJBf2oiAhBXIANBiA\n ZqIAIQV2tBAWoOAwECAAILIANB+AZqIAMQDgwBCyADEJMBIANB+AZqIAMQDiADEJMBDAALAAsgA0H4BmoQsAEgA0H4B2o\n QqQEgA0H4CGoQrQEgA0H4CmoQrQEgA0EBNgL4DAsgACADQfgGakGIBhBnGiADQYANaiQAC5ACAQJ/IwBBgAJrIgUkACAF\n QYABaiAAEF4gAiAFQYABahCQASAFQYABaiAAQYABahBeIAQgBUGAAWoQkAEgBUGAAWogAEGAAmoiBhBeIAUgBUGAAWoQX\n iAFQYABaiAGEF4gAyAFQYABahCQASAFQYABaiABQYABaiIGEF4gBSAFQYABahAPIAVBgAFqIAEQXiADIAVBgAFqEA8gAi\n ADEH0gAhCoASAEIAUQfSAEEKgBIAUgAhCQASACEFUgAhCoASAFQYABaiAGEF4gBSAFQYABahAPIAMgBBCQASAFQYABaiA\n BEF4gAyAFQYABahAPIAMgBRB9IAMQqAEgBBA6IAQQqAEgACABEAsgBUGAAmokAAvkAQECfyMAQcABayIDJAAgAxBLIAAg\n ASACQR91IgQgAnMgBEF/c2pBAm0iAkF/akEfdhBtIAAgAUHAAWogAkEBc0F/akEfdhBtIAAgAUGAA2ogAkECc0F/akEfd\n hBtIAAgAUHABGogAkEDc0F/akEfdhBtIAAgAUGABmogAkEEc0F/akEfdhBtIAAgAUHAB2ogAkEFc0F/akEfdhBtIAAgAU\n GACWogAkEGc0F/akEfdhBtIAAgAUHACmogAkEHc0F/akEfdhBtIAMgABB/IAMQpgEgACADIARBAXEQbSADQcABaiQAC+Q\n BAQJ/IwBBgANrIgMkACADECogACABIAJBH3UiBCACcyAEQX9zakECbSICQX9qQR92EG8gACABQYADaiACQQFzQX9qQR92\n EG8gACABQYAGaiACQQJzQX9qQR92EG8gACABQYAJaiACQQNzQX9qQR92EG8gACABQYAMaiACQQRzQX9qQR92EG8gACABQ\n YAPaiACQQVzQX9qQR92EG8gACABQYASaiACQQZzQX9qQR92EG8gACABQYAVaiACQQdzQX9qQR92EG8gAyAAEH4gAxCcAS\n AAIAMgBEEBcRBvIANBgANqJAALvAEBAn8jAEGwAWsiAiQAIAJBMBByIQIDQCADQTBGBEACQCABQTBqIQEgAkEwaiACEHV\n BACEDA0AgA0EwRg0BIAIgA2ogASADai0AADoAACADQQFqIQMMAAsACwUgAiADaiABIANqLQAAOgAAIANBAWohAwwBCwsg\n AkHwAGogAhB1IABBOBByIgBBATYCOCAAQUBrQTgQciAAQfgAakEBNgIAIAAgAkHwAGoQpQEgAkEwahClASACQbABaiQAC\n 9QBAQJ/IwBBgANrIgEkACABIAAQXiABQYABaiAAQYABaiICEF4gAUGAAmogABBeIAFBgAJqIAIQDyABIAIQlQEgAUGAAW\n oQVSABQYABaiAAEJUBIAEQqAEgAUGAAWoQqAEgACABEJABIAAgAUGAAWoQDyABQYABaiABQYACahCQASABQYABahBVIAF\n BgAFqIAFBgAJqEJUBIAFBgAFqEKgBIAFBgAFqEDogACABQYABahCVASABQYACahCnASACIAFBgAJqEJABIAAQrAEgAUGA\n A2okAAvEAQEBfyMAQYADayIDJAAgA0EIaiABEIUBAkAgAkUEQCADQQhqEAcMAQsgA0EIaiACEKUBCyADQcgAakHYo8AAE\n F8gA0GAAWogA0HIAGoQiwEgA0HAAWogA0EIahCFASADQcABahADIANBwAFqIAEQSCAAIAEQhQEgACADQQhqEEggA0GAAm\n ogA0HAAWoQhQEgABBYIQEgA0HAAmogABCFASADQcACahBBIANBwAJqEEQgACADQcACaiABEHkgA0GAA2okAAufAQEBfyM\n AQfAAayICJAAgAiABEF9BACEBIAJBOGpBOBByGiAAEEQCQCAAIAIQNUEASA0AA0AgAkEBEC0gAUEBaiEBIAAgAhA1QX9K\n DQALA0AgAUEATA0BIAJBARA7IAJBOGogABBrIAJBOGogAhBiIAJBOGoQRCAAIAJBOGogAikDaEI/h6dBAWoQTyABQX9qI\n QEMAAsACyACQfAAaiQAC7IBAQF/IwBBgAJrIgQkACAEQYABaiAAEF4gAyAEQYABahCQASAEQYABaiAAQYABahBeIAQgBE\n GAAWoQXiAEQYABaiAAQYACahBeIAIgBEGAAWoQkAEgASAEEJABIAEgAhAPIAMQMiAEEDIgAhAyIAEQpwEgARA6IAEQqAE\n gARBVIAEQqAEgAkEMEJ8BIANBAxCfASACEFUgAhCoASACIAQQfSACEKgBIAAQFCAEQYACaiQAC58BAQJ/IwBBgAJrIgIk\n ACAAIAEQXiAAEDIgAkGIAWpB2KTAABBfIAJBCGpBOBByGiACQQE2AkAgAkHIAGpBOBByIAJBgAFqQQE2AgAgAkHAAWogA\n kGIAWoQiwEgAkEIaiACQcABahClARCyASACQQhqEKgBIAJBCGoQVSACQQhqEKgBIAAgARAPIAAgAkEIahCVASAAEKsBIA\n JBgAJqJAALowEBAX8jAEEwayIGJAAgBkEQaiAAIAEQsQEgBiAGKAIUIgA2AhwgBiAGKAIQIgE2AhggBkEIaiACIAMQsQE\n gBiAGKAIMIgI2AiQgBiAGKAIIIgM2AiAgBiAEIAUQsQEgBiAGKAIEIgQ2AiwgBiAGKAIAIgU2AiggASAAIAMgAiAFIAQQ\n ACAGQShqEKQBIAZBIGoQpAEgBkEYahCkASAGQTBqJAALiAECA38DfiMAQRBrIgIkAAN+IANBOEYEfiACQRBqJAAgBgUgA\n iAAIANqIgQpAwAiBSAFQj+HIAGsIgUgBUI/hxAxIAQgAikDACIHIAZ8IgVC//////////8DgzcDACAFIAdUrSACQQhqKQ\n MAIAZCP4d8fEIGhiAFQjqIhCEGIANBCGohAwwBCwsLhAECA38BfiMAQUBqIgEkACABQQhqIAAQXyABQQhqEEQgAUE4aiE\n CQQYhA0HcAiEAAn8DQEEAIANBAEgNARogAikDACIEUARAIAJBeGohAiAAQUZqIQAgA0F/aiEDDAELCwN/IARQBH8gAAUg\n AEEBaiEAIARCAn8hBAwBCwsLIAFBQGskAAuHAQEBfyMAQcABayIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAa\n kEBNgIAIAEQUCABQYgBakE4EHIaIABBgAFqIAFBgAEQZxogAEGAAmpBOBByGiAAQbgCakEBNgIAIABBvAJqIAFBhAFqQT\n wQZxogAEH4AmpBATYCACABQcABaiQAC48BAQJ/IwBBgAJrIgEkACAAEKwBIAEgABBeIAFBgAFqQTgQchogAUEBNgK4ASA\n BQcABakE4EHIaIAFB+AFqQQE2AgAgASAAQYABaiICEJUBIAEQOiABQYABaiABEJABIAFBgAFqIAIQlQEgAiABEJABIAIg\n ABCVASAAIAFBgAFqEJABIAAQrAEgAUGAAmokAAt9AgF/An4jAEGAAWsiASQAIAFBCGogABCFASABQQhqEBIgAUHIAGogA\n UEIahCDAUEIIQADQCAAQThGRQRAIAFByABqIABqKQMAIAKEIQIgAEEIaiEADAELCyABKQNIIQMgAUGAAWokACACQn98IA\n NCAYVCf3yDQjqIp0EBcQuJAQIBfwJ+IAAgACkDMCABQT9xrSIDhiAAKQMoQTogAWtBP3GtIgSHhDcDMCAAQShqIQFBBiE\n CA0AgAkEBTQRAIAAgACkDACADhkL//////////wODNwMABSABIAEpAwAgA4ZC//////////8DgyABQXhqIgEpAwAgBIeE\n NwMAIAJBf2ohAgwBCwsLiQECAX8CfiAAIAApA2BBOiABQTpwIgFrrSIEhyAAKQNoIAGtIgOGhDcDaCAAQeAAaiEBQQ0hA\n gNAIAJBAU0EQCAAIAApAwAgA4ZC//////////8DgzcDAAUgASABKQMAIAOGQv//////////A4MgAUF4aiIBKQMAIASHhD\n cDACACQX9qIQIMAQsLC3EBAX8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByGiAAQfgAakEBNgIAIAFBCGpBOBB\n yGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAEG8AWogAUEEakE8EGcaIABB+AFqQQE2AgAgAUFAayQAC4EBAgF/AX4gAEHw\n ABByIQADQCACQThGBEACQCAAIAEpAzAiA0I6hzcDOCAAIANC//////////8DgzcDMCAAQUBrIQBBACECA0AgAkEwRg0BI\n AAgAmpCADcDACACQQhqIQIMAAsACwUgACACaiABIAJqKQMANwMAIAJBCGohAgwBCwsLdQECfiAAIANCIIgiBSABQiCIIg\n Z+IAIgA358IAEgBH58IANC/////w+DIgIgAUL/////D4MiAX4iA0IgiCACIAZ+fCICQiCIfCABIAV+IAJC/////w+DfCI\n BQiCIfDcDCCAAIANC/////w+DIAFCIIaENwMAC3YBAn8jAEHAAWsiASQAIAEgABCFASABQUBrIAAQhQEgAUGAAWogAEFA\n ayICEIUBIAEgAhB4IAFBQGsgABB4IAFBQGsQRCACIAFBQGsQSCABQYABahBBIAAgAUGAAWoQeCABEEQgABBEIAAgARBII\n AFBwAFqJAALkwEBAn9B0LXBAEHQtcEAKAIAQQFqNgIAAkACQEGYucEAKAIAQQFGBEBBnLnBAEGcucEAKAIAQQFqIgA2Ag\n AgAEECSw0CQaC5wQAoAgAiAUF/Sg0BDAILQZi5wQBCgYCAgBA3AwBBoLnBACgCACIAQQBIDQFBoLnBACAANgIAAAtBoLn\n BACABNgIAIABBAUsNAAALAAtnAQJ/IwBBQGoiAiQAIAAQRCACIAAQhQECQCABRQRAIAAQBwwBCyAAIAEQpQELQQAhAQNA\n IAFBAUsgA3JFBEAgABADIAFBAEchAyABIAFFaiEBDAELCyAAIAIQSCAAEBIgAkFAayQAC18CAX8EfkIBIQNBMCECA38gA\n kF4RgR/IARCAYYgA3ynQX9qBSABIAJqKQMAIgUgACACaikDACIGfUI6hyADgyAEhCEEIAJBeGohAiAFIAaFQn98QjqHIA\n ODIQMMAQsLC2ACAX8EfkIBIQNB6AAhAgN/IAJBeEYEfyAEQgGGIAN8p0F/agUgASACaikDACIFIAAgAmopAwAiBn1COoc\n gA4MgBIQhBCACQXhqIQIgBSAGhUJ/fEI6hyADgyEDDAELCwt3AQN/IwBBgAJrIgIkACACIAEQXiACQYABaiABEF4gAhAy\n IAJBgAFqIAIQDyAAIAJBgAFqEJcBIABBgAJqIgMgAkGAAWoQlwEgAEGABGoiBCACQYABahCXASADIAEQogEgBCACEKIBI\n ABBBTYCgAYgAkGAAmokAAt6AQF/IwBB4ANrIgEkACABQYABakHApcAAEF8gAUG4AWpB+KXAABBfIAEgAUGAAWogAUG4AW\n oQSSABQfACakGwpsAAEF8gAUGoA2pB6KbAABBfIAFB8AFqIAFB8AJqIAFBqANqEEkgACABIAFB8AFqED8gAUHgA2okAAt\n nACAAQQF2IAByIgBBAnYgAHIiAEEEdiAAciIAQQh2IAByIgBBEHYgAHIiACAAQQF2QdWq1aoFcWsiAEECdkGz5syZA3Eg\n AEGz5syZA3FqIgBBBHYgAGpBj568+ABxQYGChAhsQRh2C2cBAn8jAEGAAWsiASQAIAEgABCFASABQUBrQTgQchogAUEBN\n gJ4IAEgAEFAayICEHggARBBIAFBQGsgARClASABQUBrIAIQeCACIAEQpQEgAiAAEHggACABQUBrEKUBIAFBgAFqJAALaA\n IBfwJ+IAFBP3GtIQNBOiABa0E/ca0hBEEAIQEDQCABQTBGBEAgACAAKQMwIAOHNwMwBSAAIAFqIgIgAkEIaikDACAEhkL\n //////////wODIAIpAwAgA4eENwMAIAFBCGohAQwBCwsLbAEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYC\n ACADQSxqQQI2AgAgA0ICNwIMIANBlKjAADYCCCADQQI2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACE\n HAAC2wBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakECNgIAIANCAjcCDCADQbCqwAA2AgggA0\n ECNgIkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhBwAAtlAQJ/IAAgACgCACICQQhqIgM2AgAgACACQQN\n 2QTxxakEoaiICIAFB/wFxIAIoAgBBCHRyNgIAAkACQCADRQRAIABBADYCACAAIAAoAgRBAWo2AgQMAQsgA0H/A3ENAQsg\n ABARCwtnAQF/IwBBgAJrIgMkACAAECogACABEJABIABBgAFqIgEgAhCQASAAQYACahCwASAAEKgBIAMgABAmIANBgAFqI\n AEQXiADQYABahAyIANBgAFqIAMQe0UEQCAAEJgBCyADQYACaiQAC18BAn8jAEGAAWsiASQAIAAQqAEgASAAEIUBIAFBQG\n sgAEFAayICEIUBIAEQAyABQUBrEAMgASABQUBrEHggAUEAEDQgACABEEggARBBIAEQRCACIAEQSCABQYABaiQAC10BAn8\n jAEFAaiIBJAAgAUEIakGgp8AAEF8gAUEIaiAAKAI4QX9qEDkiAhAtIAAgAUEIahBjIABBASACQQFqQR9xdCICNgI4IAJB\n gICAEE4EQCAAEBILIAFBQGskAAtfAgF/AX4jAEHwAGsiASQAIAFBoKfAABBfIAApAwAhAiABQThqIAAQXyAAQQEQOyABQ\n ThqIAEQYSABQThqEEQgAUE4akEBEDsgACABQThqIAJCAoGnEE8gAUHwAGokAAt7AQJ/IABBKGohAgNAIAFBgAJGBEAgAE\n LnzKfQ1tDrs7t/NwIIIABCADcCACAAQSBqQquzj/yRo7Pw2wA3AgAgAEEYakL/pLmIxZHagpt/NwIAIABBEGpC8ua746O\n n/aelfzcCAAUgASACakEANgIAIAFBBGohAQwBCwsLaQICfwF+IAAgACkDACIDQv//////////A4M3AwBBCCEBA0AgA0I6\n hyEDIAFBMEYEQCAAIAApAzAgA3w3AzAFIAAgAWoiAiACKQMAIAN8IgNC//////////8DgzcDACABQQhqIQEMAQsLC2oCA\n n8BfiAAIAApAwAiA0L//////////wODNwMAQQghAQNAIANCOochAyABQegARgRAIAAgACkDaCADfDcDaAUgACABaiICIA\n IpAwAgA3wiA0L//////////wODNwMAIAFBCGohAQwBCwsLWQEBfyMAQYADayIEJAAgBCADEF4gBBBAIARBgAFqIAEQXiA\n EQYACaiACEF4gBEGAAWogBBAPIARBgAJqIAQQDyAAIARBgAFqIARBgAJqEJEBIARBgANqJAALWQECfyMAQUBqIgEkAAJA\n IAAQhAENACABQQEQigEgAEGAAWoiAiABEFkNACACQQAQNCAAIAIQSCAAEBIgAEFAayIAIAIQSCAAEBIgAiABEKUBCyABQ\n UBrJAALVwEBfyMAQbABayICJAAgATQCOCAANAI4fkKAgIAQWQRAIAAQEgsgAkEIaiAAIAEQCCACQfgAaiACQQhqEAUgAC\n ACQfgAahBrIABBAjYCOCACQbABaiQAC08BAn8jAEFAaiIDJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgA\n gAyABEIsBIAAgAxClASADIAIQiwEgAxClASADQUBrJAALWQECfyMAQYABayIBJAACQCAAEIgBDQAgARBQIABBgAJqIgIg\n ARB7DQAgAhBAIAAgAhAPIAAQqwEgAEGAAWoiACACEA8gABCrASACIAEQkAELIAFBgAFqJAALSwEBfyMAQUBqIgEkACAAQ\n TgQciIAQQE2AjggAUEBEIoBIABBQGsgAUHAABBnGiAAQYABakE4EHIaIABBuAFqQQE2AgAgAUFAayQAC0sBAn8jAEHwAG\n siASQAIAAQd0UEQCABQaCnwAAQXyABQThqIAAQgwEgASABQThqEGIgARBEIAFBOGogARA1IQILIAFB8ABqJAAgAgtPAQF\n /IwBBgAFrIgIkACAAIAEQhQEgABADIAJByABqQdikwAAQXyACQQhqIAJByABqEIsBIAAgARBIIAAgAkEIahB4IAAQEiAC\n QYABaiQAC0kBAn8DQCABQThGRQRAIAAgAWoiAiACKQMAQgGGNwMAIAFBCGohAQwBCwsgACAAKAI4QQF0IgE2AjggAUGAg\n IAQTgRAIAAQEgsLQgIBfwJ+QQAgAmusIQQDQCADQThHBEAgACADaiICIAIpAwAiBSABIANqKQMAhSAEgyAFhTcDACADQQ\n hqIQMMAQsLC0YBAn8jAEFAaiIBJAAgAEE4EHIiAEEBNgI4IABBQGtBOBByIABB+ABqQQE2AgAgAUEBEIoBIAAgARClARC\n yASABQUBrJAALTgEBfyMAQYAEayIBJAAgABAvIAEQLyABQYACahAvIABBgAJqIAFBgAIQZxogAEGABGogAUGAAmpBgAIQ\n ZxogAEEANgKABiABQYAEaiQAC0sBAX8jAEFAaiICJAACQCAAKAI4IAFsQYCAgBBOBEAgAiABEIoBIAAgAhBIDAELIAAgA\n RAoGiAAIAAoAjggAWw2AjgLIAJBQGskAAtKAAJ/IAFBgIDEAEcEQEEBIAAoAhggASAAQRxqKAIAKAIQEQMADQEaCyACRQ\n RAQQAPCyAAKAIYIAJBACAAQRxqKAIAKAIMEQUACwtCAQF/IwBBQGoiAiQAIAJBCGpBgIDAABBfIAEgAkEIahBrIAEQRCA\n AIAEQayAAQQMQKBogABBEIAAQKSACQUBrJAALSQECfyMAQcABayIBJAAgASAAEF4gAUGAAWogABCFASAAIABBQGsiAhCl\n ASAAEEEgAiABQYABahClASAAIAEQlQEgAUHAAWokAAtIAQF/IwBB4AFrIgEkACABQeihwAAQXyABQThqIAAgARAIIAFBq\n AFqIAFBOGoQBSAAIAFBqAFqEGsgAEECNgI4IAFB4AFqJAALPgEBfyABQTpuIQIgAUGVA00EQCAAIAJBA3RqKQMAQgEgAU\n H//wNxQTpwrYaDQgBVDwsgAkEHQdSdwAAQPAALQAIBfwF+IwBBgAFrIgEkACABQQhqIAAQhQEgAUEIahASIAFByABqIAF\n BCGoQgwEgASkDSCABQYABaiQAQgKBpws8AQF/IwBBgAFrIgIkACACIAAQhQEgAkFAayABEIUBIAIQEiACQUBrEBIgAiAC\n QUBrEDUgAkGAAWokAEULPAIBfwF+A38gAUE4RgR/IAJCf3xCgICAgICAgIAEg0I6iKcFIAAgAWopAwAgAoQhAiABQQhqI\n QEMAQsLC0cBAX8jAEEgayIDJAAgA0EUakEANgIAIANB9KrAADYCECADQgE3AgQgAyABNgIcIAMgADYCGCADIANBGGo2Ag\n AgAyACEHAACzkBAX8jAEFAaiICJAAgAiAAEIUBIAIQByABBEAgASACEKUBCyACEAMgAiAAEEggAhAsIAJBQGskAAs6AQF\n /IABBOBByIQADQCACQTBGRQRAIABBCBAtIAAgACkDACABIAJqMQAAfDcDACACQQFqIQIMAQsLCzQBAX8gAEE4EHIiAEEB\n NgI4IABBQGtBOBByIABB+ABqQQE2AgAgACABEKUBIAFBQGsQpQELMAEBfyAAQTgQciEAA0AgAkE4RwRAIAAgAmogASACa\n ikDADcDACACQQhqIQIMAQsLCz8BAX8jAEGAAmsiASQAIAAQUSABEG4gACABEJIBIABBgAJqEK0BIABBgARqEK0BIABBAT\n YCgAYgAUGAAmokAAswAQJ/A0AgAkE4RwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLMAECfwNAIAJ\n BOEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLCzABAn8DQCACQThHBEAgACACaiIDIAEgAmopAwAg\n AykDAH03AwAgAkEIaiECDAELCwsxAQJ/A0AgAkHwAEcEQCAAIAJqIgMgAykDACABIAJqKQMAfTcDACACQQhqIQIMAQsLC\n zEBAn8DQCACQfAARwRAIAAgAmoiAyADKQMAIAEgAmopAwB8NwMAIAJBCGohAgwBCwsLOQECfyMAQYABayIBJAAgASAAQY\n ABaiICEF4gAiAAEJABIAEQVSAAIAEQkAEgABCsASABQYABaiQACzMBAX8gAgRAIAAhAwNAIAMgAS0AADoAACABQQFqIQE\n gA0EBaiEDIAJBf2oiAg0ACwsgAAtIAQN/IwBBEGsiASQAIAAoAgwhAyAAKAIIIgJFBEBB9KrAAEErQaCrwAAQWwALIAEg\n AzYCCCABIAA2AgQgASACNgIAIAEQcQALMgEBfyAAQgE3AwBBCCEBA0AgAUE4RkUEQCAAIAFqQgA3AwAgAUEIaiEBDAELC\n yAAEFYLNwAgABBRIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahCSASAAIAEoAoAGNgKABgsoAQF/A0AgAk\n E4RwRAIAAgAmogASACaikDADcDACACQQhqIQIMAQsLCzMAIAAgARCSASAAQYACaiABQYACahCSASAAQYAEaiABQYAEahC\n SASAAIAEoAoAGNgKABgsoACAAIAEgAhB5IABBQGsgAUFAayACEHkgAEGAAWogAUGAAWogAhB5Cy4BAX8jAEGAAWsiASQA\n IAAQLyABEFAgACABEJABIABBgAFqEKkBIAFBgAFqJAALLQAgACABIAIQjwEgAEGAAWogAUGAAWogAhCPASAAQYACaiABQ\n YACaiACEI8BCzQBAX8jAEEQayICJAAgAiABNgIMIAIgADYCCCACQaSowAA2AgQgAkH0qsAANgIAIAIQaAALPgEBfyMAQR\n BrIgEkACABQQhqIABBCGooAgA2AgAgASAAKQIANwMAIAEoAgAiAEEUaigCABogACgCBBoQMwALKQEBfyABBEAgACECA0A\n gAkEAOgAAIAJBAWohAiABQX9qIgENAAsLIAALKwEBfyMAQcABayICJAAgAhBLIAIgARB/IAIQpgEgACACEAwgAkHAAWok\n AAsiAQF/A0AgAUE4RwRAIAAgAWpCADcDACABQQhqIQEMAQsLCycBAX8jAEFAaiICJAAgAkEIaiABEF0gACACQQhqEIsBI\n AJBQGskAAsrACAAEFEgACABEJIBIABBgAJqIAIQkgEgAEGABGogAxCSASAAQQU2AoAGCyMBAX8jAEFAaiIBJAAgASAAEI\n UBIAEQEiABEFogAUFAayQACykAIAAgARBhIAAgACgCOCABKAI4aiIBNgI4IAFBgICAEE4EQCAAEBILCyUAIAAgASACEE8\n gAEEAIAJrIAAoAjgiACABKAI4c3EgAHM2AjgLIwADQCACBEAgACABLQAAED4gAkF/aiECIAFBAWohAQwBCwsLIgACQCAA\n IAEQWUUNACAAQUBrIAFBQGsQWUUNAEEBDwtBAAskAAJAIABBfE0EQCAARQRAQQQhAAwCCyAAEAEiAA0BCwALIAALJwEBf\n yMAQYABayICJAAgAiABEF4gAhA6IAAgAhCVASACQYABaiQACycAIAAgARCQASAAQYABaiABQYABahCQASAAQYACaiABQY\n ACahCQAQslACAAIAEQpQEgAEFAayABQUBrEKUBIABBgAFqIAFBgAFqEKUBCyUBAX8jAEFAaiICJAAgAiABEIUBIAIQQSA\n AIAIQeCACQUBrJAALKAEBfyMAQYACayICJAAgAiABEI4BIAIQKyAAIAIQlgEgAkGAAmokAAsjAEGEAiACSQRAIAJBhAIg\n AxA9AAsgACACNgIEIAAgATYCAAsiAQF/IwBB8ABrIgIkACACIAEQMCAAIAIQBSACQfAAaiQACxwAAkAgABB3RQ0AIABBg\n AFqEHdFDQBBAQ8LQQALHwAgAEE4EHIiAEEBNgI4IAAgARBrIAAgASgCODYCOAseAAJAIAAQhwFFDQAgAEGAAWoQhwFFDQ\n BBAQ8LQQALGwACQCAAEHdFDQAgAEFAaxB3RQ0AQQEPC0EACx4AAkAgABCHAUUNACAAQYACahCHAUUNAEEBDwtBAAsaAQF\n /IAAQWCIBIABBQGsQWCABcyAAEHdxcwsaACAAQTgQciIAQQE2AjggACABEJ0BIAAQVgsZACAAQTgQciIAQQE2AjggACAB\n EGsgABBWCxcAIAAQRCAAKAIAQX8gAUEfcXRBf3NxCxoAIAAgARBfIAAgAhAkIAAgAhBjIAAgAhAkCxwAIAAQLyAAIAEQk\n AEgAEGAAWogAUGAAWoQkAELGAAgACABIAIQeSAAQUBrIAFBQGsgAhB5CxYAIAAgARClASAAQUBrIAFBQGsQpQELGAAgAB\n AvIAAgARCQASAAQYABaiACEJABCxgAIAAgARCQASAAQYABaiABQYABahCQAQsZACAAEK4BIABBgAJqELYBIABBgARqEK4\n BCxcAIAAQsgEgAEFAaxBpIABBgAFqELIBCxQAIAAgARB4IABBQGsgAUFAaxB4CxgAIAAgARCVASAAQYABaiABQYABahCV\n AQsYACAAEKYBIABBgAFqIgAQpgEgACABEA8LGQAgABCpASAAQYABahCwASAAQYACahCpAQsZACAAEKwBIABBgAJqEKwBI\n ABBgARqEKwBCxkAIAAQqgEgAEGAAmoQqgEgAEGABGoQqgELFgAgABAvIAAgARCQASAAQYABahCpAQsWACAAQYABaiIAEK\n gBIAAQOiAAEKgBCxQAIAAQRCAAIAApAwAgAax8NwMACxQAIAAQRCAAIAApAwAgAax9NwMACxEAIAAgARBSIABBQGsgARB\n SCxEAIAAgARBIIABBQGsgARBICxQAIAAgARCQASAAQYABaiACEJABCxIAIAAgARAPIABBgAFqIAEQDwsUACAAIAEQoAEg\n AEGAAWogARCgAQsRACAAKAIEBEAgACgCABAJCwsSACAAIAEQayAAIAEoAjg2AjgLDwAgAEFAayIAEEEgABBECw0AIAAQT\n iAAQUBrEE4LDQAgABBEIABBQGsQRAsPACAAELIBIABBQGsQsgELEAAgABCrASAAQYABahCrAQsNACAAEBIgAEFAaxASCx\n AAIAAQqAEgAEGAAWoQqAELEAAgABCpASAAQYABahCpAQsPACAAQYABahA6IAAQrAELEAAgABCnASAAQYABahCnAQsOACA\n AEGkgAEFAaxCyAQsQACAAIAI2AgQgACABNgIACw0AIAAQdCAAQQE2AjgLDAAgABBBIAAgARB4CwwAIAAgARBrIAAQVgsN\n ACAAEDogACABEJUBCwsAIAAQOiAAEKwBCwwAQunQotvMouq7RgsDAAELAwABCwv+PZoCAEGCgMAACwcBAAAAAQI0AEG4g\n MAAC9sBuF8jku11BwFjT+D5WE+pA2dPnKtLeD0Akew9ffXy9AMD1g8fDSwgAK1vjPCZwa4A8DtNkAEAAADzStxtEor3AI\n uwH1tTsFYDgvLFYx+X7AAysL/NHtseAkehVLifHyMCQHo6ogw4sQGz4sMPAAAAAHNyYy9ibHMxMjM4MS9wYWlyLnJzqAA\n QABQAAAAHAQAACQAAAKgAEAAUAAAADAEAAA0AAACoABAAFAAAABEBAAANAAAAAAAAAAEAAAD///8Dv/+W/78AaQM7VYAd\n moCAAefMIPV1pkwBp+1zAEGogsAACyz+//7///8BAosAgILYBPYB4Y1oiW++kwLOdqvfPagdAMZpulHOdt8Dy1nGFwBB4\n ILAAAuRAZABEAATAAAA0AEAABgAAACQARAAEwAAANQBAAARAAAAkAEQABMAAADWAQAAHAAAAHNyYy9ibHMxMjM4MS9lY3\n AucnMAkAEQABMAAAAZBQAADQAAAJABEAATAAAAGwUAAAkAAACQARAAEwAAABwFAAARAAAAkAEQABMAAAAfBQAAHAAAAAA\n AAAABAAEAAAABAjQAQaCEwAALuSCQARAAEwAAAGcEAAARAAAAkAEQABMAAABsBAAADQAAAJABEAATAAAAbgQAABUAAACQ\n ARAAEwAAAHAEAAAgAAAAHUxYLQgo9ADXXz44aOPbAInJGoj9roEBomOjmrkPTgGY6rCCSW3JAoBOWs9QOu4AimlEAQAAA\n ADgKxeO6UjMAXSpOluMVsgAolXvNe/8FADngsIBPcnDA8EWIDvuPnUAusRiAAwgWgDRCCkuAQAAALgh6L1iEMUA3/4Vlz\n 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\n GZYzb76G2KA7ycH+3PFk8AK2qmngEAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAbxEQABIAAAB8AQAAFAAAAAA\n AAABhdHRlbXB0IHRvIGRpdmlkZSB3aXRoIG92ZXJmbG93c3JjL2JsczEyMzgxL2ZwLnJzAAAAbxEQABIAAAASAgAADQAA\n AG8REAASAAAAHgIAACYAAABvERAAEgAAAB4CAAAjAAAAbxEQABIAAAAkAgAAFwAAAG8REAASAAAAJAIAABQAAAAAAAAAq\n qr//////gHu//9UrP//AupBYg9rDyoBw5z9ShTOEwJLd2TXrEtDAu3pxpKm+V8Cox4RoAEAAABAEhAAFAAAABUBAAATAA\n AAQBIQABQAAAAeAQAAGAAAAEASEAAUAAAAJAEAABwAAABzcmMvYmxzMTIzODEvZWNwMi5ycwAAAAAEAEGQpcAAC7wGQBI\n QABQAAADmAgAACQAAAEASEAAUAAAA7gIAAA0AAABAEhAAFAAAAP4CAAAhAAAAuL0hwchWgAD1+24BqskAA7pwFz2uR7YA\n RNEK7ADpUwN65MZREMUtA0kBgkmkwiMALyuqJAAAAAB+KwRdBX2sAflVF+WERDwDNJME9ce9GwJp12rYgmRCA9BrWWVPJ\n 4gA6DRrH9hnnAAFtgI+AQAAAAEouAiGVJMBeKIo6w5zsgIjyRINFpWmAQq1nU73MqoCm/2tGjUu2gJxczJjhFufAHdSXc\n 4AAAAAvnlf8F8HqQJqaAc710nDAfOzmulytSoB0pm8jp0W+gEoPsuZi8IrAKw0qwwzzakDAkpsYAAAAACrqv/////+Ae7\n //1Ss//8C6kFiD2sPKgHDnP1KFM4TAkt3ZNesS0MC7enGkqb5XwKjHhGgAQAAAAgUEAALAAAAjwEAAA8AAAAIFBAACwAA\n AKcBAAATAAAACBQQAAsAAACqAQAADQAAAHNyYy9obWFjLnJzADQUEAAgAAAAVBQQABIAAAADAAAAAAAAAAEAAAAEAAAAa\n W5kZXggb3V0IG9mIGJvdW5kczogdGhlIGxlbiBpcyAgYnV0IHRoZSBpbmRleCBpcyAwMDAxMDIwMzA0MDUwNjA3MDgwOT\n EwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ\n 0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5\n ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQAAQBUQABAAAABQFRAAIgAAAHJhbmdlIGVuZCBpb\n mRleCAgb3V0IG9mIHJhbmdlIGZvciBzbGljZSBvZiBsZW5ndGggAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIG\n EgYE5vbmVgIHZhbHVlALAVEAAcAAAA7gEAAB4AAABsaWJyYXJ5L3N0ZC9zcmMvcGFuaWNraW5nLnJzAEGIrMAACwEBAEH\n IrMAACwEBAEGIrcAACwEBAEHIrcAACwEBAEGIrsAACwEBAEHIrsAACwEBAEGIr8AACwEBAEHIr8AACwEBAEGIsMAACwEB\n AEHIsMAACwEBAEGIscAACwEBAEHIscAACwEBAEGIssAACwEBAEHIssAACwEBAEGIs8AACwEBAEHIs8AACwEBAEGItMAAC\n wEBAEHItMAACwEBAEGItcAACwEBAEHItcAACwEBAEGItsAACwEBAEHItsAACwEBAEGIt8AACwEBAEHIt8AACwEBAEGIuM\n AACwEBAEHIuMAACwEBAEGIucAACwEBAEHIucAACwEBAEGIusAACwEBAEHIusAACwEBAEGIu8AACwEBAEHIu8AACwEBAEG\n IvMAACwEBAEHIvMAACwEBAEGIvcAACwEBAEHIvcAACwEBAEGIvsAACwEBAEHIvsAACwEBAEGIv8AACwEBAEHIv8AACwEB\n AEGIwMAACwEBAEHIwMAACwEBAEGIwcAACwEBAEHIwcAACwEBAEGIwsAACwEBAEHIwsAACwEBAEGIw8AACwEBAEHIw8AAC\n wEBAEGIxMAACwEBAEHIxMAACwEBAEGIxcAACwEBAEHIxcAACwEBAEGIxsAACwEBAEHIxsAACwEBAEGIx8AACwEBAEHIx8\n AACwEBAEGIyMAACwEBAEHIyMAACwEBAEGIycAACwEBAEHIycAACwEBAEGIysAACwEBAEHIysAACwEBAEGIy8AACwEBAEH\n Iy8AACwEBAEGIzMAACwEBAEHIzMAACwEBAEGIzcAACwEBAEHIzcAACwEBAEGIzsAACwEBAEHIzsAACwEBAEGIz8AACwEB\n AEHIz8AACwEBAEGI0MAACwEBAEHI0MAACwEBAEGI0cAACwEBAEHI0cAACwEBAEGI0sAACwEBAEHI0sAACwEBAEGI08AAC\n wEBAEHI08AACwEBAEGI1MAACwEBAEHI1MAACwEBAEGI1cAACwEBAEHI1cAACwEBAEGI1sAACwEBAEHI1sAACwEBAEGI18\n AACwEBAEHI18AACwEBAEGI2MAACwEBAEHI2MAACwEBAEGI2cAACwEBAEHI2cAACwEBAEGI2sAACwEBAEHI2sAACwEBAEG\n I28AACwEBAEHI28AACwEBAEGI3MAACwEBAEHI3MAACwEBAEGI3cAACwEBAEHI3cAACwEBAEGI3sAACwEBAEHI3sAACwEB\n AEGI38AACwEBAEHI38AACwEBAEGI4MAACwEBAEHI4MAACwEBAEGI4cAACwEBAEHI4cAACwEBAEGI4sAACwEBAEHI4sAAC\n wEBAEGI48AACwEBAEHI48AACwEBAEGI5MAACwEBAEHI5MAACwEBAEGI5cAACwEBAEHI5cAACwEBAEGI5sAACwEBAEHI5s\n AACwEBAEGI58AACwEBAEHI58AACwEBAEGI6MAACwEBAEHI6MAACwEBAEGI6cAACwEBAEHI6cAACwEBAEGI6sAACwEBAEH\n I6sAACwEBAEGI68AACwEBAEHI68AACwEBAEGI7MAACwEBAEHI7MAACwEBAEGI7cAACwEBAEHI7cAACwEBAEGI7sAACwEB\n AEHI7sAACwEBAEGI78AACwEBAEHI78AACwEBAEGI8MAACwEBAEHI8MAACwEBAEGI8cAACwEBAEHI8cAACwEBAEGI8sAAC\n wEBAEHI8sAACwEBAEGI88AACwEBAEHI88AACwEBAEGI9MAACwEBAEHI9MAACwEBAEGI9cAACwEBAEHI9cAACwEBAEGI9s\n AACwEBAEHI9sAACwEBAEGI98AACwEBAEHI98AACwEBAEGI+MAACwEBAEHI+MAACwEBAEGI+cAACwEBAEHI+cAACwEBAEG\n I+sAACwEBAEHI+sAACwEBAEGI+8AACwEBAEHI+8AACwEBAEGI/MAACwEBAEHI/MAACwEBAEGI/cAACwEBAEHI/cAACwEB\n AEGI/sAACwEBAEHI/sAACwEBAEGI/8AACwEBAEHI/8AACwEBAEGIgMEACwEBAEHIgMEACwEBAEGIgcEACwEBAEHIgcEAC\n wEBAEGIgsEACwEBAEHIgsEACwEBAEGIg8EACwEBAEHIg8EACwEBAEGIhMEACwEBAEHIhMEACwEBAEGIhcEACwEBAEHIhc\n EACwEBAEGIhsEACwEBAEHIhsEACwEBAEGIh8EACwEBAEHIh8EACwEBAEGIiMEACwEBAEHIiMEACwEBAEGIicEACwEBAEH\n IicEACwEBAEGIisEACwEBAEHIisEACwEBAEGIi8EACwEBAEHIi8EACwEBAEGIjMEACwEBAEHIjMEACwEBAEGIjcEACwEB\n AEHIjcEACwEBAEGIjsEACwEBAEHIjsEACwEBAEGIj8EACwEBAEHIj8EACwEBAEGIkMEACwEBAEHIkMEACwEBAEGIkcEAC\n wEBAEHIkcEACwEBAEGIksEACwEBAEHIksEACwEBAEGIk8EACwEBAEHIk8EACwEBAEGIlMEACwEBAEHIlMEACwEBAEGIlc\n EACwEBAEHIlcEACwEBAEGIlsEACwEBAEHIlsEACwEBAEGIl8EACwEBAEHIl8EACwEBAEGImMEACwEBAEHImMEACwEBAEG\n ImcEACwEBAEHImcEACwEBAEGImsEACwEBAEHImsEACwEBAEGIm8EACwEBAEHIm8EACwEBAEGInMEACwEBAEHInMEACwEB\n AEGIncEACwEBAEHIncEACwEBAEGInsEACwEBAEHInsEACwEBAEGIn8EACwEBAEHIn8EACwEBAEGIoMEACwEBAEHIoMEAC\n wEBAEGIocEACwEBAEHIocEACwEBAEGIosEACwEBAEHIosEACwEBAEGIo8EACwEBAEHIo8EACwEBAEGIpMEACwEBAEHIpM\n EACwEBAEGIpcEACwEBAEHIpcEACwEBAEGIpsEACwEBAEHIpsEACwEBAEGIp8EACwEBAEHIp8EACwEBAEGIqMEACwEBAEH\n IqMEACwEBAEGIqcEACwEBAEHIqcEACwEBAEGIqsEACwEBAEHIqsEACwEBAEGIq8EACwEBAEHIq8EACwEBAEGIrMEACwEB\n AEHIrMEACwEBAEGIrcEACwEBAEHIrcEACwEBAEGIrsEACwEBAEHIrsEACwEBAEGIr8EACwEBAEHIr8EACwEBAEGIsMEAC\n wEBAEHIsMEACwEBAEGIscEACwEBAEHIscEACwEBAEGIssEACwEBAEHIssEACwEBAEGIs8EACwEBAEHIs8EACwEBAEGItM\n EACwEBAEHItMEACwEBAEGItcEACwEBAEHItcEACwEBAHsJcHJvZHVjZXJzAghsYW5ndWFnZQEEUnVzdAAMcHJvY2Vzc2V\n kLWJ5AwVydXN0Yx0xLjQ5LjAgKGUxODg0YThlMyAyMDIwLTEyLTI5KQZ3YWxydXMGMC4xOC4wDHdhc20tYmluZGdlbhIw\n LjIuNzAgKGI2MzU1YzI3MCk=\n`.replace(/[^0-9a-zA-Z/+]/g, '');\nconst wasmBytes = base64Arraybuffer.decode(wasmBytesBase64);\n/**\n * @returns {number}\n */\nexport function bls_init() {\n let ret = wasm.bls_init();\n return ret;\n}\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n return [ptr, arg.length];\n}\n/**\n * @param {Uint8Array} sig\n * @param {Uint8Array} m\n * @param {Uint8Array} w\n * @returns {number}\n */\nexport function bls_verify(sig, m, w) {\n const [ptr0, len0] = passArray8ToWasm0(sig, wasm.__wbindgen_malloc);\n const [ptr1, len1] = passArray8ToWasm0(m, wasm.__wbindgen_malloc);\n const [ptr2, len2] = passArray8ToWasm0(w, wasm.__wbindgen_malloc);\n const ret = wasm.bls_verify(ptr0, len0, ptr1, len1, ptr2, len2);\n return ret;\n}\nasync function load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n }\n else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n }\n else {\n return instance;\n }\n }\n}\nasync function init() {\n const imports = {};\n const { instance, module } = await load(wasmBytes, imports);\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module;\n return wasm;\n}\n/**\n * If `module_or_path` is {RequestInfo} or {URL}, makes a request and\n * for everything else, calls `WebAssembly.instantiate` directly.\n *\n * @param {InitInput | Promise} module_or_path\n *\n * @returns {Promise}\n */\nexport default init;\n//# sourceMappingURL=bls.js.map","import init, { bls_init, bls_verify } from '../vendor/bls/bls';\nexport let verify;\nexport async function blsVerify(pk, sig, msg) {\n if (!verify) {\n await init();\n if (bls_init() !== 0) {\n throw new Error('Cannot initialize BLS');\n }\n verify = (pk1, sig1, msg1) => {\n // Reorder things from what the WASM expects (sig, m, w).\n return bls_verify(sig1, msg1, pk1) === 0;\n };\n }\n return verify(pk, sig, msg);\n}\n//# sourceMappingURL=bls.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport * as cbor from './cbor';\nimport { hash } from './request_id';\nimport { blobFromBuffer, blobFromText, blobFromUint8Array, blobToHex, blobToUint8Array, } from './types';\nimport { blsVerify } from './utils/bls';\n/**\n * Make a human readable string out of a hash tree.\n * @param tree\n */\nexport function hashTreeToString(tree) {\n const indent = (s) => s.split('\\n').map(x => ' ' + x).join('\\n');\n function labelToString(label) {\n const decoder = new TextDecoder(undefined, { fatal: true });\n try {\n return JSON.stringify(decoder.decode(label));\n }\n catch (e) {\n return `data(...${label.byteLength} bytes)`;\n }\n }\n switch (tree[0]) {\n case 0: return '()';\n case 1: {\n const left = hashTreeToString(tree[1]);\n const right = hashTreeToString(tree[2]);\n return `sub(\\n left:\\n${indent(left)}\\n---\\n right:\\n${indent(right)}\\n)`;\n }\n case 2: {\n const label = labelToString(tree[1]);\n const sub = hashTreeToString(tree[2]);\n return `label(\\n label:\\n${indent(label)}\\n sub:\\n${indent(sub)}\\n)`;\n }\n case 3: {\n return `leaf(...${tree[1].byteLength} bytes)`;\n }\n case 4: {\n return `pruned(${blobToHex(blobFromUint8Array(new Uint8Array(tree[1])))}`;\n }\n default: {\n return `unknown(${JSON.stringify(tree[0])})`;\n }\n }\n}\nfunction isBufferEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\nexport class Certificate {\n constructor(response, _agent = getDefaultAgent()) {\n this._agent = _agent;\n this.verified = false;\n this._rootKey = null;\n this.cert = cbor.decode(response.certificate);\n }\n lookupEx(path) {\n if (!this.verified) {\n throw new Error('Cannot lookup unverified certificate');\n }\n return lookupPathEx(path, this.cert.tree);\n }\n lookup(path) {\n if (!this.verified) {\n throw new Error('Cannot lookup unverified certificate');\n }\n return lookup_path(path, this.cert.tree);\n }\n async verify() {\n const rootHash = await reconstruct(this.cert.tree);\n const derKey = await this._checkDelegation(this.cert.delegation);\n const sig = this.cert.signature;\n const key = extractDER(derKey);\n const msg = Buffer.concat([domain_sep('ic-state-root'), rootHash]);\n const res = await blsVerify(key, sig, msg);\n this.verified = res;\n return res;\n }\n async fetchRootKey() {\n await this._agent.fetchRootKey();\n this._rootKey = this._agent.rootKey;\n }\n async _checkDelegation(d) {\n if (!d) {\n if (!this._rootKey) {\n if (this._agent.rootKey) {\n this._rootKey = this._agent.rootKey;\n return this._rootKey;\n }\n this._rootKey = await this._agent.fetchRootKey();\n }\n return this._rootKey;\n }\n const cert = new Certificate(d, this._agent);\n if (!(await cert.verify())) {\n throw new Error('fail to verify delegation certificate');\n }\n const res = cert.lookup([Buffer.from('subnet'), d.subnet_id, Buffer.from('public_key')]);\n return Promise.resolve(res);\n }\n}\nconst DER_PREFIX = Buffer.from('308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100', 'hex');\nconst KEY_LENGTH = 96;\nfunction extractDER(buf) {\n const expectedLength = DER_PREFIX.length + KEY_LENGTH;\n if (buf.length !== expectedLength) {\n throw new TypeError(`BLS DER-encoded public key must be ${expectedLength} bytes long`);\n }\n const prefix = buf.slice(0, DER_PREFIX.length);\n if (!isBufferEqual(prefix, DER_PREFIX)) {\n throw new TypeError(`BLS DER-encoded public key is invalid. Expect the following prefix: ${DER_PREFIX}, but get ${prefix}`);\n }\n return buf.slice(DER_PREFIX.length);\n}\n/**\n * @param t\n */\nexport async function reconstruct(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return hash(domain_sep('ic-hashtree-empty'));\n case 4 /* Pruned */:\n return Buffer.from(t[1]);\n case 3 /* Leaf */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-leaf'),\n Buffer.from(t[1]),\n ]));\n case 2 /* Labeled */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-labeled'),\n Buffer.from(t[1]),\n Buffer.from(await reconstruct(t[2])),\n ]));\n case 1 /* Fork */:\n return hash(Buffer.concat([\n domain_sep('ic-hashtree-fork'),\n Buffer.from(await reconstruct(t[1])),\n Buffer.from(await reconstruct(t[2])),\n ]));\n default:\n throw new Error('unreachable');\n }\n}\nfunction domain_sep(s) {\n const buf = Buffer.alloc(1);\n buf.writeUInt8(s.length, 0);\n return Buffer.concat([buf, Buffer.from(s)]);\n}\n/**\n *\n * @param path\n * @param tree\n */\nexport function lookupPathEx(path, tree) {\n const maybeReturn = lookup_path(path.map(p => {\n if (typeof p === 'string') {\n return blobFromText(p);\n }\n else {\n return blobFromUint8Array(new Uint8Array(p));\n }\n }), tree);\n return maybeReturn && blobToUint8Array(blobFromBuffer(maybeReturn));\n}\n/**\n * @param path\n * @param tree\n */\nexport function lookup_path(path, tree) {\n if (path.length === 0) {\n switch (tree[0]) {\n case 3 /* Leaf */: {\n return Buffer.from(tree[1]);\n }\n default: {\n return undefined;\n }\n }\n }\n const t = find_label(path[0], flatten_forks(tree));\n if (t) {\n return lookup_path(path.slice(1), t);\n }\n}\nfunction flatten_forks(t) {\n switch (t[0]) {\n case 0 /* Empty */:\n return [];\n case 1 /* Fork */:\n return flatten_forks(t[1]).concat(flatten_forks(t[2]));\n default:\n return [t];\n }\n}\nfunction find_label(l, trees) {\n if (trees.length === 0) {\n return undefined;\n }\n for (const t of trees) {\n if (t[0] === 2 /* Labeled */) {\n const p = Buffer.from(t[1]);\n if (isBufferEqual(l, p)) {\n return t[2];\n }\n }\n }\n}\n//# sourceMappingURL=certificate.js.map","import { toHex } from '..';\nconst FIVE_MINUTES_IN_MSEC = 5 * 60 * 1000;\n/**\n * A best practices polling strategy: wait 2 seconds before the first poll, then 1 second\n * with an exponential backoff factor of 1.2. Timeout after 5 minutes.\n */\nexport function defaultStrategy() {\n return chain(conditionalDelay(once(), 1000), backoff(1000, 1.2), timeout(FIVE_MINUTES_IN_MSEC));\n}\n/**\n * Predicate that returns true once.\n */\nexport function once() {\n let first = true;\n return async () => {\n if (first) {\n first = false;\n return true;\n }\n return false;\n };\n}\n/**\n * Delay the polling once.\n * @param condition A predicate that indicates when to delay.\n * @param timeInMsec The amount of time to delay.\n */\nexport function conditionalDelay(condition, timeInMsec) {\n return async (canisterId, requestId, status) => {\n if (await condition(canisterId, requestId, status)) {\n return new Promise(resolve => setTimeout(resolve, timeInMsec));\n }\n };\n}\n/**\n * Error out after a maximum number of polling has been done.\n * @param count The maximum attempts to poll.\n */\nexport function maxAttempts(count) {\n let attempts = count;\n return async (canisterId, requestId, status) => {\n if (--attempts <= 0) {\n throw new Error(`Failed to retrieve a reply for request after ${count} attempts:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * Throttle polling.\n * @param throttleInMsec Amount in millisecond to wait between each polling.\n */\nexport function throttle(throttleInMsec) {\n return () => new Promise(resolve => setTimeout(resolve, throttleInMsec));\n}\n/**\n * Reject a call after a certain amount of time.\n * @param timeInMsec Time in milliseconds before the polling should be rejected.\n */\nexport function timeout(timeInMsec) {\n const end = Date.now() + timeInMsec;\n return async (canisterId, requestId, status) => {\n if (Date.now() > end) {\n throw new Error(`Request timed out after ${timeInMsec} msec:\\n` +\n ` Request ID: ${toHex(requestId)}\\n` +\n ` Request status: ${status}\\n`);\n }\n };\n}\n/**\n * A strategy that throttle, but using an exponential backoff strategy.\n * @param startingThrottleInMsec The throttle in milliseconds to start with.\n * @param backoffFactor The factor to multiple the throttle time between every poll. For\n * example if using 2, the throttle will double between every run.\n */\nexport function backoff(startingThrottleInMsec, backoffFactor) {\n let currentThrottling = startingThrottleInMsec;\n return () => new Promise(resolve => setTimeout(() => {\n currentThrottling *= backoffFactor;\n resolve();\n }, currentThrottling));\n}\n/**\n * Chain multiple polling strategy. This _chains_ the strategies, so if you pass in,\n * say, two throttling strategy of 1 second, it will result in a throttle of 2 seconds.\n * @param strategies A strategy list to chain.\n */\nexport function chain(...strategies) {\n return async (canisterId, requestId, status) => {\n for (const a of strategies) {\n await a(canisterId, requestId, status);\n }\n };\n}\n//# sourceMappingURL=strategy.js.map","import { RequestStatusResponseStatus } from '../agent';\nimport { Certificate } from '../certificate';\nimport { toHex as requestIdToHex } from '../request_id';\nimport { blobFromText } from '../types';\nexport * as strategy from './strategy';\nexport { defaultStrategy } from './strategy';\n/**\n * Polls the IC to check the status of the given request then\n * returns the response bytes once the request has been processed.\n * @param agent The agent to use to poll read_state.\n * @param canisterId The effective canister ID.\n * @param requestId The Request ID to poll status for.\n * @param strategy A polling strategy.\n */\nexport async function pollForResponse(agent, canisterId, requestId, strategy) {\n const path = [blobFromText('request_status'), requestId];\n const state = await agent.readState(canisterId, { paths: [path] });\n const cert = new Certificate(state, agent);\n const verified = await cert.verify();\n if (!verified) {\n throw new Error('Fail to verify certificate');\n }\n const maybeBuf = cert.lookup([...path, blobFromText('status')]);\n let status;\n if (typeof maybeBuf === 'undefined') {\n // Missing requestId means we need to wait\n status = RequestStatusResponseStatus.Unknown;\n }\n else {\n status = maybeBuf.toString();\n }\n switch (status) {\n case RequestStatusResponseStatus.Replied: {\n return cert.lookup([...path, blobFromText('reply')]);\n }\n case RequestStatusResponseStatus.Received:\n case RequestStatusResponseStatus.Unknown:\n case RequestStatusResponseStatus.Processing:\n // Execute the polling strategy, then retry.\n await strategy(canisterId, requestId, status);\n return pollForResponse(agent, canisterId, requestId, strategy);\n case RequestStatusResponseStatus.Rejected: {\n const rejectCode = cert.lookup([...path, blobFromText('reject_code')]).toString();\n const rejectMessage = cert.lookup([...path, blobFromText('reject_message')]).toString();\n throw new Error(`Call was rejected:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n` +\n ` Reject code: ${rejectCode}\\n` +\n ` Reject text: ${rejectMessage}\\n`);\n }\n case RequestStatusResponseStatus.Done:\n // This is _technically_ not an error, but we still didn't see the `Replied` status so\n // we don't know the result and cannot decode it.\n throw new Error(`Call was marked as done but we never saw the reply:\\n` +\n ` Request ID: ${requestIdToHex(requestId)}\\n`);\n }\n throw new Error('unreachable');\n}\n//# sourceMappingURL=index.js.map","import { Buffer } from 'buffer/';\nimport { getDefaultAgent } from './agent';\nimport { getManagementCanister } from './canisters/management';\nimport * as IDL from './idl';\nimport { pollForResponse, strategy } from './polling';\nimport { Principal } from './principal';\nimport { toHex as requestIdToHex } from './request_id';\n/**\n * The mode used when installing a canister.\n */\nexport var CanisterInstallMode;\n(function (CanisterInstallMode) {\n CanisterInstallMode[\"Install\"] = \"install\";\n CanisterInstallMode[\"Reinstall\"] = \"reinstall\";\n CanisterInstallMode[\"Upgrade\"] = \"upgrade\";\n})(CanisterInstallMode || (CanisterInstallMode = {}));\nconst metadataSymbol = Symbol.for('ic-agent-metadata');\n/**\n * An actor base class. An actor is an object containing only functions that will\n * return a promise. These functions are derived from the IDL definition.\n */\nexport class Actor {\n constructor(metadata) {\n this[metadataSymbol] = Object.freeze(metadata);\n }\n /**\n * Get the Agent class this Actor would call, or undefined if the Actor would use\n * the default agent (global.ic.agent).\n * @param actor The actor to get the agent of.\n */\n static agentOf(actor) {\n return actor[metadataSymbol].config.agent;\n }\n /**\n * Get the interface of an actor, in the form of an instance of a Service.\n * @param actor The actor to get the interface of.\n */\n static interfaceOf(actor) {\n return actor[metadataSymbol].service;\n }\n static canisterIdOf(actor) {\n return Principal.from(actor[metadataSymbol].config.canisterId);\n }\n static async install(fields, config) {\n const mode = fields.mode === undefined ? CanisterInstallMode.Install : fields.mode;\n // Need to transform the arg into a number array.\n const arg = fields.arg ? [...fields.arg] : [];\n // Same for module.\n const wasmModule = [...fields.module];\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n await getManagementCanister(config).install_code({\n mode: { [mode]: null },\n arg,\n wasm_module: wasmModule,\n canister_id: canisterId,\n });\n }\n static async createCanister(config) {\n const { canister_id: canisterId } = await getManagementCanister(config || {}).provisional_create_canister_with_cycles({ amount: [], settings: [] });\n return canisterId;\n }\n static async createAndInstallCanister(interfaceFactory, fields, config) {\n const canisterId = await this.createCanister(config);\n await this.install(Object.assign({}, fields), Object.assign(Object.assign({}, config), { canisterId }));\n return this.createActor(interfaceFactory, Object.assign(Object.assign({}, config), { canisterId }));\n }\n static createActorClass(interfaceFactory) {\n const service = interfaceFactory({ IDL });\n class CanisterActor extends Actor {\n constructor(config) {\n const canisterId = typeof config.canisterId === 'string'\n ? Principal.fromText(config.canisterId)\n : config.canisterId;\n super({\n config: Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), config), { canisterId }),\n service,\n });\n for (const [methodName, func] of service._fields) {\n this[methodName] = _createActorMethod(this, methodName, func);\n }\n }\n }\n return CanisterActor;\n }\n static createActor(interfaceFactory, configuration) {\n return new (this.createActorClass(interfaceFactory))(configuration);\n }\n}\n// IDL functions can have multiple return values, so decoding always\n// produces an array. Ensure that functions with single or zero return\n// values behave as expected.\nfunction decodeReturnValue(types, msg) {\n const returnValues = IDL.decode(types, Buffer.from(msg));\n switch (returnValues.length) {\n case 0:\n return undefined;\n case 1:\n return returnValues[0];\n default:\n return returnValues;\n }\n}\nconst DEFAULT_ACTOR_CONFIG = {\n pollingStrategyFactory: strategy.defaultStrategy,\n};\nfunction _createActorMethod(actor, methodName, func) {\n let caller;\n if (func.annotations.includes('query')) {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).queryTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const cid = options.canisterId || actor[metadataSymbol].config.canisterId;\n const arg = IDL.encode(func.argTypes, args);\n const result = await agent.query(cid, { methodName, arg });\n switch (result.status) {\n case \"rejected\" /* Rejected */:\n throw new Error(`Query failed:\\n` +\n ` Status: ${result.status}\\n` +\n ` Message: ${result.reject_message}\\n`);\n case \"replied\" /* Replied */:\n return decodeReturnValue(func.retTypes, result.reply.arg);\n }\n };\n }\n else {\n caller = async (options, ...args) => {\n var _a, _b;\n // First, if there's a config transformation, call it.\n options = Object.assign(Object.assign({}, options), (_b = (_a = actor[metadataSymbol].config).callTransform) === null || _b === void 0 ? void 0 : _b.call(_a, methodName, args, Object.assign(Object.assign({}, actor[metadataSymbol].config), options)));\n const agent = options.agent || actor[metadataSymbol].config.agent || getDefaultAgent();\n const { canisterId, effectiveCanisterId, pollingStrategyFactory } = Object.assign(Object.assign(Object.assign({}, DEFAULT_ACTOR_CONFIG), actor[metadataSymbol].config), options);\n const cid = Principal.from(canisterId);\n const ecid = effectiveCanisterId !== undefined ? Principal.from(effectiveCanisterId) : cid;\n const arg = IDL.encode(func.argTypes, args);\n const { requestId, response } = await agent.call(cid, {\n methodName,\n arg,\n effectiveCanisterId: ecid,\n });\n if (!response.ok) {\n throw new Error([\n 'Call failed:',\n ` Method: ${methodName}(${args})`,\n ` Canister ID: ${cid}`,\n ` Request ID: ${requestIdToHex(requestId)}`,\n ` HTTP status code: ${response.status}`,\n ` HTTP status text: ${response.statusText}`,\n ].join('\\n'));\n }\n const pollStrategy = pollingStrategyFactory();\n const responseBytes = await pollForResponse(agent, ecid, requestId, pollStrategy);\n if (responseBytes !== undefined) {\n return decodeReturnValue(func.retTypes, responseBytes);\n }\n else if (func.retTypes.length === 0) {\n return undefined;\n }\n else {\n throw new Error(`Call was returned undefined, but type [${func.retTypes.join(',')}].`);\n }\n };\n }\n const handler = (...args) => caller({}, ...args);\n handler.withOptions = (options) => (...args) => caller(options, ...args);\n return handler;\n}\n//# sourceMappingURL=actor.js.map","import { Buffer } from 'buffer/';\nimport { lebEncode } from './utils/leb128';\nexport function blobFromBuffer(b) {\n return b;\n}\nexport function blobFromUint8Array(arr) {\n return Buffer.from(arr);\n}\nexport function blobFromText(text) {\n return Buffer.from(text);\n}\nexport function blobFromUint32Array(arr) {\n return Buffer.from(arr);\n}\nexport function derBlobFromBlob(blob) {\n return blob;\n}\nexport function blobFromHex(hex) {\n return Buffer.from(hex, 'hex');\n}\nexport function blobToHex(blob) {\n return blob.toString('hex');\n}\nexport function blobToUint8Array(blob) {\n return new Uint8Array(blob.slice(0, blob.byteLength));\n}\n/**\n * Create a random Nonce, based on date and a random suffix.\n */\nexport function makeNonce() {\n return lebEncode(BigInt(+Date.now()) * BigInt(100000) + BigInt(Math.floor(Math.random() * 100000)));\n}\n//# sourceMappingURL=types.js.map","// tslint:disable:no-bitwise\nconst alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n// Build a lookup table for decoding.\nconst lookupTable = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input) {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n // The output string in base32.\n let output = '';\n function encodeByte(byte) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= (byte >> (-skip));\n }\n else {\n // no carry\n bits = (byte << skip) & 248;\n }\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n return 0;\n }\n for (let i = 0; i < input.length;) {\n i += encodeByte(input[i]);\n }\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input) {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n const output = new Uint8Array((input.length * 4 / 3) | 0);\n let o = 0;\n function decodeChar(char) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n }\n else {\n byte = 0;\n }\n }\n }\n for (const c of input) {\n decodeChar(c);\n }\n return output.slice(0, o);\n}\n//# sourceMappingURL=base32.js.map","// tslint:disable:no-bitwise\n// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable = new Uint32Array([\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n]);\n/**\n * Calculate the CRC32 of a blob.\n * @param buf The blob to calculate the CRC32 of.\n */\nexport function getCrc32(buf) {\n const b = new Uint8Array(buf);\n let crc = -1;\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xFF;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n return (crc ^ -1) >>> 0;\n}\n//# sourceMappingURL=getCrc.js.map","import { Buffer } from 'buffer/';\nimport { blobFromHex, blobFromUint8Array, blobToHex } from './types';\nimport { decode, encode } from './utils/base32';\nimport { getCrc32 } from './utils/getCrc';\nimport { sha224 } from './utils/sha224';\nconst SELF_AUTHENTICATING_SUFFIX = 2;\nconst ANONYMOUS_SUFFIX = 4;\nexport class Principal {\n constructor(_blob) {\n this._blob = _blob;\n this._isPrincipal = true;\n }\n static anonymous() {\n return new this(blobFromUint8Array(new Uint8Array([ANONYMOUS_SUFFIX])));\n }\n static selfAuthenticating(publicKey) {\n const sha = sha224(publicKey);\n return new this(blobFromUint8Array(new Uint8Array([...sha, SELF_AUTHENTICATING_SUFFIX])));\n }\n static from(other) {\n if (typeof other === 'string') {\n return Principal.fromText(other);\n }\n else if (typeof other === 'object'\n && other !== null\n && other._isPrincipal === true) {\n return new Principal(other._blob);\n }\n throw new Error(`Impossible to convert ${JSON.stringify(other)} to Principal.`);\n }\n static fromHex(hex) {\n return new this(blobFromHex(hex));\n }\n static fromText(text) {\n const canisterIdNoDash = text.toLowerCase().replace(/-/g, '');\n let arr = decode(canisterIdNoDash);\n arr = arr.slice(4, arr.length);\n const principal = new this(blobFromUint8Array(arr));\n if (principal.toText() !== text) {\n throw new Error(`Principal \"${principal.toText()}\" does not have a valid checksum.`);\n }\n return principal;\n }\n static fromBlob(blob) {\n return new this(blob);\n }\n isAnonymous() {\n return this._blob.byteLength === 1 && this._blob[0] === ANONYMOUS_SUFFIX;\n }\n toBlob() {\n return this._blob;\n }\n toHash() {\n return this._blob;\n }\n toHex() {\n return blobToHex(this._blob).toUpperCase();\n }\n toText() {\n const checksumArrayBuf = new ArrayBuffer(4);\n const view = new DataView(checksumArrayBuf);\n view.setUint32(0, getCrc32(this.toBlob()), false);\n const checksum = Uint8Array.from(Buffer.from(checksumArrayBuf));\n const bytes = Uint8Array.from(this._blob);\n const array = new Uint8Array([...checksum, ...bytes]);\n const result = encode(array);\n const matches = result.match(/.{1,5}/g);\n if (!matches) {\n // This should only happen if there's no character, which is unreachable.\n throw new Error();\n }\n return matches.join('-');\n }\n toString() {\n return this.toText();\n }\n}\n//# sourceMappingURL=principal.js.map","import { sha224 as jsSha224 } from 'js-sha256';\nimport { blobFromUint8Array } from '../types';\nexport function sha224(data) {\n const shaObj = jsSha224.create();\n shaObj.update(data);\n return blobFromUint8Array(new Uint8Array(shaObj.array()));\n}\n//# sourceMappingURL=sha224.js.map","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__export(require(\"./serializer\"));\nconst value = __importStar(require(\"./value\"));\nexports.value = value;\n//# sourceMappingURL=index.js.map","import { sha256 as jsSha256 } from 'js-sha256';\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport { blobFromBuffer, blobFromUint8Array, blobToHex } from './types';\nimport { lebEncode } from './utils/leb128';\n/**\n * get RequestId as hex-encoded blob.\n * @param requestId - RequestId to hex\n */\nexport function toHex(requestId) {\n return blobToHex(requestId);\n}\n/**\n * sha256 hash the provided Buffer\n * @param data - input to hash function\n */\nexport function hash(data) {\n const hashed = jsSha256.create().update(data).arrayBuffer();\n return blobFromUint8Array(new Uint8Array(hashed));\n}\nfunction hashValue(value) {\n if (value instanceof borc.Tagged) {\n return hashValue(value.value);\n }\n else if (typeof value === 'string') {\n return hashString(value);\n }\n else if (typeof value === 'number') {\n return hash(lebEncode(value));\n }\n else if (Buffer.isBuffer(value)) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (value instanceof Uint8Array || value instanceof ArrayBuffer) {\n return hash(blobFromUint8Array(new Uint8Array(value)));\n }\n else if (Array.isArray(value)) {\n const vals = value.map(hashValue);\n return hash(Buffer.concat(vals));\n }\n else if (typeof value === 'object' &&\n value !== null &&\n typeof value.toHash === 'function') {\n return hashValue(value.toHash());\n // TODO This should be move to a specific async method as the webauthn flow required\n // the flow to be synchronous to ensure Safari touch id works.\n // } else if (value instanceof Promise) {\n // return value.then(x => hashValue(x));\n }\n else if (typeof value === 'bigint') {\n // Do this check much later than the other bigint check because this one is much less\n // type-safe.\n // So we want to try all the high-assurance type guards before this 'probable' one.\n return hash(lebEncode(value));\n }\n throw Object.assign(new Error(`Attempt to hash a value of unsupported type: ${value}`), {\n // include so logs/callers can understand the confusing value.\n // (when stringified in error message, prototype info is lost)\n value,\n });\n}\nconst hashString = (value) => {\n const encoder = new TextEncoder();\n const encoded = encoder.encode(value);\n return hash(Buffer.from(encoded));\n};\n/**\n * Concatenate many blobs.\n * @param bs - blobs to concatenate\n */\nfunction concat(bs) {\n return blobFromBuffer(Buffer.concat(bs));\n}\n/**\n * Get the RequestId of the provided ic-ref request.\n * RequestId is the result of the representation-independent-hash function.\n * https://sdk.dfinity.org/docs/interface-spec/index.html#hash-of-map\n * @param request - ic-ref request to hash into RequestId\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function requestIdOf(request) {\n const hashed = Object.entries(request)\n .filter(([, value]) => value !== undefined)\n .map(([key, value]) => {\n const hashedKey = hashString(key);\n const hashedValue = hashValue(value);\n return [hashedKey, hashedValue];\n });\n const traversed = hashed;\n const sorted = traversed.sort(([k1], [k2]) => {\n return Buffer.compare(Buffer.from(k1), Buffer.from(k2));\n });\n const concatenated = concat(sorted.map(concat));\n const requestId = hash(concatenated);\n return requestId;\n}\n//# sourceMappingURL=request_id.js.map","export * from './api';\nexport * from './http';\nexport * from './proxy';\nexport function getDefaultAgent() {\n const agent = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.ic.agent\n : global.ic.agent\n : window.ic.agent;\n if (!agent) {\n throw new Error('No Agent could be found.');\n }\n return agent;\n}\n//# sourceMappingURL=index.js.map","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","// tslint:disable:max-classes-per-file\n// This file is based on:\n// tslint:disable-next-line: max-line-length\n// https://github.com/dfinity-lab/dfinity/blob/9bca65f8edd65701ea6bdb00e0752f9186bbc893/docs/spec/public/index.adoc#cbor-encoding-of-requests-and-responses\nimport borc from 'borc';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nimport { SelfDescribeCborSerializer } from 'simple-cbor';\nimport { blobFromBuffer, blobFromHex } from './types';\n// We are using hansl/simple-cbor for CBOR serialization, to avoid issues with\n// encoding the uint64 values that the HTTP handler of the client expects for\n// canister IDs. However, simple-cbor does not yet provide deserialization so\n// we are using `Uint8Array` so that we can use the dignifiedquire/borc CBOR\n// decoder.\nclass PrincipalEncoder {\n get name() {\n return 'Principal';\n }\n get priority() {\n return 0;\n }\n match(value) {\n return value && value._isPrincipal === true;\n }\n encode(v) {\n return cbor.value.bytes(v.toBlob());\n }\n}\nclass BufferEncoder {\n get name() {\n return 'Buffer';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return Buffer.isBuffer(value);\n }\n encode(v) {\n return cbor.value.bytes(new Uint8Array(v));\n }\n}\nclass BigIntEncoder {\n get name() {\n return 'BigInt';\n }\n get priority() {\n return 1;\n }\n match(value) {\n return typeof value === `bigint`;\n }\n encode(v) {\n // Always use a bigint encoding.\n if (v > BigInt(0)) {\n return cbor.value.tagged(2, cbor.value.bytes(blobFromHex(v.toString(16))));\n }\n else {\n return cbor.value.tagged(3, cbor.value.bytes(blobFromHex((BigInt('-1') * v).toString(16))));\n }\n }\n}\nconst serializer = SelfDescribeCborSerializer.withDefaultEncoders(true);\nserializer.addEncoder(new PrincipalEncoder());\nserializer.addEncoder(new BufferEncoder());\nserializer.addEncoder(new BigIntEncoder());\nexport var CborTag;\n(function (CborTag) {\n CborTag[CborTag[\"Uint64LittleEndian\"] = 71] = \"Uint64LittleEndian\";\n CborTag[CborTag[\"Semantic\"] = 55799] = \"Semantic\";\n})(CborTag || (CborTag = {}));\nexport const encode = (value) => {\n return blobFromBuffer(Buffer.from(serializer.serialize(value)));\n};\nfunction decodePositiveBigInt(buf) {\n const len = buf.byteLength;\n let res = BigInt(0);\n for (let i = 0; i < len; i++) {\n // tslint:disable-next-line:no-bitwise\n res = res * BigInt(0x100) + BigInt(buf[i]);\n }\n return res;\n}\nexport function decode(input) {\n const decoder = new borc.Decoder({\n size: input.byteLength,\n tags: {\n // Override tags 2 and 3 for BigInt support (borc supports only BigNumber).\n 2: val => decodePositiveBigInt(val),\n 3: val => -decodePositiveBigInt(val),\n [CborTag.Semantic]: (value) => value,\n },\n });\n const result = decoder.decodeFirst(input);\n return result;\n}\n//# sourceMappingURL=cbor.js.map","import { blobFromHex, blobFromUint8Array, blobToHex, derBlobFromBlob, SignIdentity, blobFromBuffer, } from '@dfinity/agent';\nimport { Buffer } from 'buffer/';\nimport * as tweetnacl from 'tweetnacl';\nexport class Ed25519PublicKey {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(key) {\n this.rawKey = key;\n this.derKey = Ed25519PublicKey.derEncode(key);\n }\n static from(key) {\n return this.fromDer(key.toDer());\n }\n static fromRaw(rawKey) {\n return new Ed25519PublicKey(rawKey);\n }\n static fromDer(derKey) {\n return new Ed25519PublicKey(this.derDecode(derKey));\n }\n static derEncode(publicKey) {\n if (publicKey.byteLength !== Ed25519PublicKey.RAW_KEY_LENGTH) {\n const bl = publicKey.byteLength;\n throw new TypeError(`ed25519 public key must be ${Ed25519PublicKey.RAW_KEY_LENGTH} bytes long (is ${bl})`);\n }\n // https://github.com/dfinity/agent-js/issues/42#issuecomment-716356288\n const derPublicKey = Uint8Array.from([\n ...Ed25519PublicKey.DER_PREFIX,\n ...new Uint8Array(publicKey),\n ]);\n return derBlobFromBlob(blobFromUint8Array(derPublicKey));\n }\n static derDecode(key) {\n const expectedLength = Ed25519PublicKey.DER_PREFIX.length + Ed25519PublicKey.RAW_KEY_LENGTH;\n if (key.byteLength !== expectedLength) {\n const bl = key.byteLength;\n throw new TypeError(`Ed25519 DER-encoded public key must be ${expectedLength} bytes long (is ${bl})`);\n }\n const rawKey = blobFromUint8Array(key.subarray(Ed25519PublicKey.DER_PREFIX.length));\n if (!this.derEncode(rawKey).equals(key)) {\n throw new TypeError('Ed25519 DER-encoded public key is invalid. A valid Ed25519 DER-encoded public key ' +\n `must have the following prefix: ${Ed25519PublicKey.DER_PREFIX}`);\n }\n return rawKey;\n }\n toDer() {\n return this.derKey;\n }\n toRaw() {\n return this.rawKey;\n }\n}\n// The length of Ed25519 public keys is always 32 bytes.\nEd25519PublicKey.RAW_KEY_LENGTH = 32;\n// Adding this prefix to a raw public key is sufficient to DER-encode it.\n// See https://github.com/dfinity/agent-js/issues/42#issuecomment-716356288\nEd25519PublicKey.DER_PREFIX = Uint8Array.from([\n ...[48, 42],\n ...[48, 5],\n ...[6, 3],\n ...[43, 101, 112],\n ...[3],\n ...[Ed25519PublicKey.RAW_KEY_LENGTH + 1],\n ...[0], // 'no padding'\n]);\nexport class Ed25519KeyIdentity extends SignIdentity {\n // `fromRaw` and `fromDer` should be used for instantiation, not this constructor.\n constructor(publicKey, _privateKey) {\n super();\n this._privateKey = _privateKey;\n this._publicKey = Ed25519PublicKey.from(publicKey);\n }\n static generate(seed) {\n if (seed && seed.length !== 32) {\n throw new Error('Ed25519 Seed needs to be 32 bytes long.');\n }\n const { publicKey, secretKey } = seed === undefined ? tweetnacl.sign.keyPair() : tweetnacl.sign.keyPair.fromSeed(seed);\n return new this(Ed25519PublicKey.fromRaw(blobFromUint8Array(publicKey)), blobFromUint8Array(secretKey));\n }\n static fromParsedJson(obj) {\n const [publicKeyDer, privateKeyRaw] = obj;\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromDer(blobFromHex(publicKeyDer)), blobFromHex(privateKeyRaw));\n }\n static fromJSON(json) {\n const parsed = JSON.parse(json);\n if (Array.isArray(parsed)) {\n if (typeof parsed[0] === 'string' && typeof parsed[1] === 'string') {\n return this.fromParsedJson([parsed[0], parsed[1]]);\n }\n else {\n throw new Error('Deserialization error: JSON must have at least 2 items.');\n }\n }\n else if (typeof parsed === 'object' && parsed !== null) {\n const { publicKey, _publicKey, secretKey, _privateKey } = parsed;\n const pk = publicKey\n ? Ed25519PublicKey.fromRaw(blobFromUint8Array(new Uint8Array(publicKey.data)))\n : Ed25519PublicKey.fromDer(blobFromUint8Array(new Uint8Array(_publicKey.data)));\n if (publicKey && secretKey && secretKey.data) {\n return new Ed25519KeyIdentity(pk, blobFromUint8Array(new Uint8Array(secretKey.data)));\n }\n else if (_publicKey && _privateKey && _privateKey.data) {\n return new Ed25519KeyIdentity(pk, blobFromUint8Array(new Uint8Array(_privateKey.data)));\n }\n }\n throw new Error(`Deserialization error: Invalid JSON type for string: ${JSON.stringify(json)}`);\n }\n static fromKeyPair(publicKey, privateKey) {\n return new Ed25519KeyIdentity(Ed25519PublicKey.fromRaw(publicKey), privateKey);\n }\n static fromSecretKey(secretKey) {\n const keyPair = tweetnacl.sign.keyPair.fromSecretKey(new Uint8Array(secretKey));\n const identity = Ed25519KeyIdentity.fromKeyPair(blobFromUint8Array(keyPair.publicKey), blobFromUint8Array(keyPair.secretKey));\n return identity;\n }\n /**\n * Serialize this key to JSON.\n */\n toJSON() {\n return [blobToHex(this._publicKey.toDer()), blobToHex(this._privateKey)];\n }\n /**\n * Return a copy of the key pair.\n */\n getKeyPair() {\n return {\n secretKey: blobFromUint8Array(new Uint8Array(this._privateKey)),\n publicKey: this._publicKey,\n };\n }\n /**\n * Return the public key.\n */\n getPublicKey() {\n return this._publicKey;\n }\n /**\n * Signs a blob of data, with this identity's private key.\n * @param challenge - challenge to sign with this identity's secretKey, producing a signature\n */\n async sign(challenge) {\n const blob = challenge instanceof Buffer\n ? blobFromBuffer(challenge)\n : blobFromUint8Array(new Uint8Array(challenge));\n const signature = tweetnacl.sign.detached(blob, this._privateKey);\n return blobFromUint8Array(signature);\n }\n}\n//# sourceMappingURL=ed25519.js.map","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { blobFromHex, blobFromUint8Array, derBlobFromBlob, Principal, requestIdOf, SignIdentity, } from '@dfinity/agent';\nimport { Buffer } from 'buffer/';\nimport * as cbor from 'simple-cbor';\nconst domainSeparator = new TextEncoder().encode('\\x1Aic-request-auth-delegation');\nconst requestDomainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\nfunction _parseBlob(value) {\n if (typeof value !== 'string' || value.length < 64) {\n throw new Error('Invalid public key.');\n }\n return blobFromHex(value);\n}\n/**\n * A single delegation object that is signed by a private key. This is constructed by\n * `DelegationChain.create()`.\n *\n * {@see DelegationChain}\n */\nexport class Delegation {\n constructor(pubkey, expiration, targets) {\n this.pubkey = pubkey;\n this.expiration = expiration;\n this.targets = targets;\n }\n toCBOR() {\n // Expiration field needs to be encoded as a u64 specifically.\n return cbor.value.map(Object.assign({ pubkey: cbor.value.bytes(this.pubkey), expiration: cbor.value.u64(this.expiration.toString(16), 16) }, (this.targets && {\n targets: cbor.value.array(this.targets.map(t => cbor.value.bytes(t.toBlob()))),\n })));\n }\n toJSON() {\n // every string should be hex and once-de-hexed,\n // discoverable what it is (e.g. de-hex to get JSON with a 'type' property, or de-hex to DER with an OID)\n // After de-hex, if it's not obvious what it is, it's an ArrayBuffer.\n return Object.assign({ expiration: this.expiration.toString(16), pubkey: this.pubkey.toString('hex') }, (this.targets && { targets: this.targets.map(p => p.toBlob().toString('hex')) }));\n }\n}\n/**\n * Sign a single delegation object for a period of time.\n *\n * @param from The identity that lends its delegation.\n * @param to The identity that receives the delegation.\n * @param expiration An expiration date for this delegation.\n * @param targets Limit this delegation to the target principals.\n */\nasync function _createSingleDelegation(from, to, expiration, targets) {\n const delegation = new Delegation(to.toDer(), BigInt(+expiration) * BigInt(1000000), // In nanoseconds.\n targets);\n // The signature is calculated by signing the concatenation of the domain separator\n // and the message.\n // Note: To ensure Safari treats this as a user gesture, ensure to not use async methods\n // besides the actualy webauthn functionality (such as `sign`). Safari will de-register\n // a user gesture if you await an async call thats not fetch, xhr, or setTimeout.\n const challenge = new Uint8Array([...domainSeparator, ...requestIdOf(delegation)]);\n const signature = await from.sign(blobFromUint8Array(challenge));\n return {\n delegation,\n signature,\n };\n}\n/**\n * A chain of delegations. This is JSON Serializable.\n * This is the object to serialize and pass to a DelegationIdentity. It does not keep any\n * private keys.\n */\nexport class DelegationChain {\n constructor(delegations, publicKey) {\n this.delegations = delegations;\n this.publicKey = publicKey;\n }\n /**\n * Create a delegation chain between two (or more) keys. By default, the expiration time\n * will be very short (15 minutes).\n *\n * To build a chain of more than 2 identities, this function needs to be called multiple times,\n * passing the previous delegation chain into the options argument. For example:\n *\n * @example\n * const rootKey = createKey();\n * const middleKey = createKey();\n * const bottomeKey = createKey();\n *\n * const rootToMiddle = await DelegationChain.create(\n * root, middle.getPublicKey(), Date.parse('2100-01-01'),\n * );\n * const middleToBottom = await DelegationChain.create(\n * middle, bottom.getPublicKey(), Date.parse('2100-01-01'), { previous: rootToMiddle },\n * );\n *\n * // We can now use a delegation identity that uses the delegation above:\n * const identity = DelegationIdentity.fromDelegation(bottomKey, middleToBottom);\n *\n * @param from The identity that will delegate.\n * @param to The identity that gets delegated. It can now sign messages as if it was the\n * identity above.\n * @param expiration The length the delegation is valid. By default, 15 minutes from calling\n * this function.\n * @param options A set of options for this delegation. expiration and previous\n * @param options.previous - Another DelegationChain that this chain should start with.\n * @param options.targets - targets that scope the delegation (e.g. Canister Principals)\n */\n static async create(from, to, expiration = new Date(Date.now() + 15 * 60 * 1000), options = {}) {\n var _a, _b;\n const delegation = await _createSingleDelegation(from, to, expiration, options.targets);\n return new DelegationChain([...(((_a = options.previous) === null || _a === void 0 ? void 0 : _a.delegations) || []), delegation], ((_b = options.previous) === null || _b === void 0 ? void 0 : _b.publicKey) || from.getPublicKey().toDer());\n }\n /**\n * Creates a DelegationChain object from a JSON string.\n *\n * @param json The JSON string to parse.\n */\n static fromJSON(json) {\n const { publicKey, delegations } = typeof json === 'string' ? JSON.parse(json) : json;\n if (!Array.isArray(delegations)) {\n throw new Error('Invalid delegations.');\n }\n const parsedDelegations = delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { pubkey, expiration, targets } = delegation;\n if (targets !== undefined && !Array.isArray(targets)) {\n throw new Error('Invalid targets.');\n }\n return {\n delegation: new Delegation(_parseBlob(pubkey), BigInt(`0x${expiration}`), // expiration in JSON is an hexa string (See toJSON() below).\n targets &&\n targets.map((t) => {\n if (typeof t !== 'string') {\n throw new Error('Invalid target.');\n }\n return Principal.fromHex(t);\n })),\n signature: _parseBlob(signature),\n };\n });\n return new this(parsedDelegations, derBlobFromBlob(_parseBlob(publicKey)));\n }\n /**\n * Creates a DelegationChain object from a list of delegations and a DER-encoded public key.\n *\n * @param delegations The list of delegations.\n * @param publicKey The DER-encoded public key of the key-pair signing the first delegation.\n */\n static fromDelegations(delegations, publicKey) {\n return new this(delegations, publicKey);\n }\n toJSON() {\n return {\n delegations: this.delegations.map(signedDelegation => {\n const { delegation, signature } = signedDelegation;\n const { targets } = delegation;\n return {\n delegation: Object.assign({ expiration: delegation.expiration.toString(16), pubkey: delegation.pubkey.toString('hex') }, (targets && {\n targets: targets.map(t => t.toBlob().toString('hex')),\n })),\n signature: signature.toString('hex'),\n };\n }),\n publicKey: this.publicKey.toString('hex'),\n };\n }\n}\n/**\n * An Identity that adds delegation to a request. Everywhere in this class, the name\n * innerKey refers to the SignIdentity that is being used to sign the requests, while\n * originalKey is the identity that is being borrowed. More identities can be used\n * in the middle to delegate.\n */\nexport class DelegationIdentity extends SignIdentity {\n constructor(_inner, _delegation) {\n super();\n this._inner = _inner;\n this._delegation = _delegation;\n }\n /**\n * Create a delegation without having access to delegateKey.\n *\n * @param key The key used to sign the reqyests.\n * @param delegation A delegation object created using `createDelegation`.\n */\n static fromDelegation(key, delegation) {\n return new this(key, delegation);\n }\n getDelegation() {\n return this._delegation;\n }\n getPublicKey() {\n return {\n toDer: () => this._delegation.publicKey,\n };\n }\n sign(blob) {\n return this._inner.sign(blob);\n }\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_sig: await this.sign(blobFromUint8Array(Buffer.concat([requestDomainSeparator, requestId]))),\n sender_delegation: this._delegation.delegations,\n sender_pubkey: this._delegation.publicKey,\n } });\n }\n}\n//# sourceMappingURL=delegation.js.map","import { blobFromHex, blobFromUint8Array, derBlobFromBlob, SignIdentity, } from '@dfinity/agent';\nimport borc from 'borc';\nimport * as tweetnacl from 'tweetnacl';\nfunction _coseToDerEncodedBlob(cose) {\n const c = new Uint8Array(cose);\n if (c.byteLength > 230) {\n // 'Tis true, 'tis too much.\n throw new Error('Cannot encode byte length of more than 230.');\n }\n // prettier-ignore\n const der = new Uint8Array([\n 0x30, 0x10 + c.byteLength + 1,\n 0x30, 0x0C,\n // OID 1.3.6.1.4.1.56387.1.1\n 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x83, 0xB8, 0x43, 0x01, 0x01,\n 0x03, 1 + c.byteLength, 0x00,\n ...c,\n ]);\n return derBlobFromBlob(blobFromUint8Array(der));\n}\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n *\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nfunction _authDataToCose(authData) {\n const dataView = new DataView(new ArrayBuffer(2));\n const idLenBytes = authData.slice(53, 55);\n [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n const credentialIdLength = dataView.getUint16(0);\n // Get the public key object.\n return authData.slice(55 + credentialIdLength);\n}\nexport class CosePublicKey {\n constructor(_cose) {\n this._cose = _cose;\n this._encodedKey = _coseToDerEncodedBlob(_cose);\n }\n toDer() {\n return this._encodedKey;\n }\n getCose() {\n return this._cose;\n }\n}\n/**\n * Create a challenge from a string or array. The default challenge is always the same\n * because we don't need to verify the authenticity of the key on the server (we don't\n * register our keys with the IC). Any challenge would do, even one per key, randomly\n * generated.\n *\n * @param challenge The challenge to transform into a byte array. By default a hard\n * coded string.\n */\nfunction _createChallengeBuffer(challenge = '') {\n if (typeof challenge === 'string') {\n return Uint8Array.from(challenge, c => c.charCodeAt(0));\n }\n else {\n return challenge;\n }\n}\n/**\n * Create a credentials to authenticate with a server. This is necessary in order in\n * WebAuthn to get credentials IDs (which give us the public key and allow us to\n * sign), but in the case of the Internet Computer, we don't actually need to register\n * it, so we don't.\n * @param credentialCreationOptions an optional CredentialCreationOptions object\n */\nasync function _createCredential(credentialCreationOptions) {\n const creds = (await navigator.credentials.create(credentialCreationOptions !== null && credentialCreationOptions !== void 0 ? credentialCreationOptions : {\n publicKey: {\n authenticatorSelection: {\n userVerification: 'preferred',\n },\n attestation: 'direct',\n challenge: _createChallengeBuffer(),\n pubKeyCredParams: [{ type: 'public-key', alg: PubKeyCoseAlgo.ECDSA_WITH_SHA256 }],\n rp: {\n name: 'Internet Identity Service',\n },\n user: {\n id: tweetnacl.randomBytes(16),\n name: 'Internet Identity',\n displayName: 'Internet Identity',\n },\n },\n }));\n // Validate that it's the correct type at runtime, since WebAuthn does not HAVE to\n // reply with a PublicKeyCredential.\n if (creds.response === undefined || !(creds.rawId instanceof ArrayBuffer)) {\n return null;\n }\n else {\n return creds;\n }\n}\n// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\nvar PubKeyCoseAlgo;\n(function (PubKeyCoseAlgo) {\n PubKeyCoseAlgo[PubKeyCoseAlgo[\"ECDSA_WITH_SHA256\"] = -7] = \"ECDSA_WITH_SHA256\";\n})(PubKeyCoseAlgo || (PubKeyCoseAlgo = {}));\n/**\n * A SignIdentity that uses `navigator.credentials`. See https://webauthn.guide/ for\n * more information about WebAuthentication.\n */\nexport class WebAuthnIdentity extends SignIdentity {\n constructor(rawId, cose) {\n super();\n this.rawId = rawId;\n this._publicKey = new CosePublicKey(cose);\n }\n /**\n * Create an identity from a JSON serialization.\n * @param json - json to parse\n */\n static fromJSON(json) {\n const { publicKey, rawId } = JSON.parse(json);\n if (typeof publicKey !== 'string' || typeof rawId !== 'string') {\n throw new Error('Invalid JSON string.');\n }\n return new this(blobFromHex(rawId), blobFromHex(publicKey));\n }\n /**\n * Create an identity.\n * @param credentialCreationOptions an optional CredentialCreationOptions Challenge\n */\n static async create(credentialCreationOptions) {\n const creds = await _createCredential(credentialCreationOptions);\n if (!creds || creds.type !== 'public-key') {\n throw new Error('Could not create credentials.');\n }\n const response = creds.response;\n if (!(response.attestationObject instanceof ArrayBuffer)) {\n throw new Error('Was expecting an attestation response.');\n }\n // Parse the attestationObject as CBOR.\n const attObject = borc.decodeFirst(new Uint8Array(response.attestationObject));\n return new this(blobFromUint8Array(new Uint8Array(creds.rawId)), blobFromUint8Array(new Uint8Array(_authDataToCose(attObject.authData))));\n }\n getPublicKey() {\n return this._publicKey;\n }\n async sign(blob) {\n const result = (await navigator.credentials.get({\n publicKey: {\n allowCredentials: [\n {\n type: 'public-key',\n id: this.rawId,\n },\n ],\n challenge: blob,\n userVerification: 'preferred',\n },\n }));\n const response = result.response;\n if (response.signature instanceof ArrayBuffer &&\n response.authenticatorData instanceof ArrayBuffer) {\n const cbor = borc.encode(new borc.Tagged(55799, {\n authenticator_data: new Uint8Array(response.authenticatorData),\n client_data_json: new TextDecoder().decode(response.clientDataJSON),\n signature: new Uint8Array(response.signature),\n }));\n if (!cbor) {\n throw new Error('failed to encode cbor');\n }\n return blobFromUint8Array(new Uint8Array(cbor));\n }\n else {\n throw new Error('Invalid response from WebAuthn.');\n }\n }\n /**\n * Allow for JSON serialization of all information needed to reuse this identity.\n */\n toJSON() {\n return {\n publicKey: this._publicKey.getCose().toString('hex'),\n rawId: this.rawId.toString('hex'),\n };\n }\n}\n//# sourceMappingURL=webauthn.js.map","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","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import * as cbor from 'simple-cbor';\nimport { makeNonce } from '../../types';\nimport { lebEncode } from '../../utils/leb128';\nconst NANOSECONDS_PER_MILLISECONDS = BigInt(1000000);\nconst REPLICA_PERMITTED_DRIFT_MILLISECONDS = BigInt(60 * 1000);\nexport class Expiry {\n constructor(deltaInMSec) {\n // Use bigint because it can overflow the maximum number allowed in a double float.\n this._value = (BigInt(Date.now()) + BigInt(deltaInMSec) - REPLICA_PERMITTED_DRIFT_MILLISECONDS)\n * NANOSECONDS_PER_MILLISECONDS;\n }\n toCBOR() {\n // TODO: change this to take the minimum amount of space (it always takes 8 bytes now).\n return cbor.value.u64(this._value.toString(16), 16);\n }\n toHash() {\n return lebEncode(this._value);\n }\n}\n/**\n * Create a Nonce transform, which takes a function that returns a Buffer, and adds it\n * as the nonce to every call requests.\n * @param nonceFn A function that returns a buffer. By default uses a semi-random method.\n */\nexport function makeNonceTransform(nonceFn = makeNonce) {\n return async (request) => {\n // Nonce are only useful for async calls, to prevent replay attacks. Other types of\n // calls don't need Nonce so we just skip creating one.\n if (request.endpoint === \"call\" /* Call */) {\n request.body.nonce = nonceFn();\n }\n };\n}\n/**\n * Create a transform that adds a delay (by default 5 minutes) to the expiry.\n *\n * @param delayInMilliseconds The delay to add to the call time, in milliseconds.\n */\nexport function makeExpiryTransform(delayInMilliseconds) {\n return async (request) => {\n request.body.ingress_expiry = new Expiry(delayInMilliseconds);\n };\n}\n//# sourceMappingURL=transforms.js.map","'use strict'\n\n// exports.Commented = require('./commented')\nexports.Diagnose = require('./diagnose')\nexports.Decoder = require('./decoder')\nexports.Encoder = require('./encoder')\nexports.Simple = require('./simple')\nexports.Tagged = require('./tagged')\n\n// exports.comment = exports.Commented.comment\nexports.decodeAll = exports.Decoder.decodeAll\nexports.decodeFirst = exports.Decoder.decodeFirst\nexports.diagnose = exports.Diagnose.diagnose\nexports.encode = exports.Encoder.encode\nexports.decode = exports.Decoder.decode\n\nexports.leveldb = {\n decode: exports.Decoder.decodeAll,\n encode: exports.Encoder.encode,\n buffer: true,\n name: 'cbor'\n}\n","(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict'\nconst Buffer = require('safe-buffer').Buffer\n\nmodule.exports = class BufferPipe {\n /**\n * Creates a new instance of a pipe\n * @param {Buffer} buf - an optional buffer to start with\n */\n constructor (buf = Buffer.from([])) {\n this.buffer = buf\n this._bytesRead = 0\n this._bytesWrote = 0\n }\n\n /**\n * read `num` number of bytes from the pipe\n * @param {Number} num\n * @return {Buffer}\n */\n read (num) {\n this._bytesRead += num\n const data = this.buffer.slice(0, num)\n this.buffer = this.buffer.slice(num)\n return data\n }\n\n /**\n * Wites a buffer to the pipe\n * @param {Buffer} buf\n */\n write (buf) {\n buf = Buffer.from(buf)\n this._bytesWrote += buf.length\n this.buffer = Buffer.concat([this.buffer, buf])\n }\n\n /**\n * Whether or not there is more data to read from the buffer\n * returns {Boolean}\n */\n get end () {\n return !this.buffer.length\n }\n\n /**\n * returns the number of bytes read from the stream\n * @return {Integer}\n */\n get bytesRead () {\n return this._bytesRead\n }\n\n /**\n * returns the number of bytes wrote to the stream\n * @return {Integer}\n */\n get bytesWrote () {\n return this._bytesWrote\n }\n}\n","import React from 'react';\nexport default React.createContext(null);",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.0.1\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz';\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","'use strict'\n\nconst Bignumber = require('bignumber.js').BigNumber\n\nexports.MT = {\n POS_INT: 0,\n NEG_INT: 1,\n BYTE_STRING: 2,\n UTF8_STRING: 3,\n ARRAY: 4,\n MAP: 5,\n TAG: 6,\n SIMPLE_FLOAT: 7\n}\n\nexports.TAG = {\n DATE_STRING: 0,\n DATE_EPOCH: 1,\n POS_BIGINT: 2,\n NEG_BIGINT: 3,\n DECIMAL_FRAC: 4,\n BIGFLOAT: 5,\n BASE64URL_EXPECTED: 21,\n BASE64_EXPECTED: 22,\n BASE16_EXPECTED: 23,\n CBOR: 24,\n URI: 32,\n BASE64URL: 33,\n BASE64: 34,\n REGEXP: 35,\n MIME: 36\n}\n\nexports.NUMBYTES = {\n ZERO: 0,\n ONE: 24,\n TWO: 25,\n FOUR: 26,\n EIGHT: 27,\n INDEFINITE: 31\n}\n\nexports.SIMPLE = {\n FALSE: 20,\n TRUE: 21,\n NULL: 22,\n UNDEFINED: 23\n}\n\nexports.SYMS = {\n NULL: Symbol('null'),\n UNDEFINED: Symbol('undef'),\n PARENT: Symbol('parent'),\n BREAK: Symbol('break'),\n STREAM: Symbol('stream')\n}\n\nexports.SHIFT32 = Math.pow(2, 32)\nexports.SHIFT16 = Math.pow(2, 16)\n\nexports.MAX_SAFE_HIGH = 0x1fffff\nexports.NEG_ONE = new Bignumber(-1)\nexports.TEN = new Bignumber(10)\nexports.TWO = new Bignumber(2)\n\nexports.PARENT = {\n ARRAY: 0,\n OBJECT: 1,\n MAP: 2,\n TAG: 3,\n BYTE_STRING: 4,\n UTF8_STRING: 5\n}\n","var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { Buffer } from 'buffer/';\nimport { Principal } from './principal';\nimport { requestIdOf } from './request_id';\nimport { blobFromBuffer } from './types';\nconst domainSeparator = Buffer.from(new TextEncoder().encode('\\x0Aic-request'));\n/**\n * An Identity that can sign blobs.\n */\nexport class SignIdentity {\n /**\n * Get the principal represented by this identity. Normally should be a\n * `Principal.selfAuthenticating()`.\n */\n getPrincipal() {\n if (!this._principal) {\n this._principal = Principal.selfAuthenticating(this.getPublicKey().toDer());\n }\n return this._principal;\n }\n /**\n * Transform a request into a signed version of the request. This is done last\n * after the transforms on the body of a request. The returned object can be\n * anything, but must be serializable to CBOR.\n * @param request - internet computer request to transform\n */\n async transformRequest(request) {\n const { body } = request, fields = __rest(request, [\"body\"]);\n const requestId = await requestIdOf(body);\n return Object.assign(Object.assign({}, fields), { body: {\n content: body,\n sender_pubkey: this.getPublicKey().toDer(),\n sender_sig: await this.sign(blobFromBuffer(Buffer.concat([domainSeparator, requestId]))),\n } });\n }\n}\nexport class AnonymousIdentity {\n getPrincipal() {\n return Principal.anonymous();\n }\n async transformRequest(request) {\n return Object.assign(Object.assign({}, request), { body: { content: request.body } });\n }\n}\n/**\n * Create an IdentityDescriptor from a @dfinity/authentication Identity\n * @param identity - identity describe in returned descriptor\n */\nexport function createIdentityDescriptor(identity) {\n const identityIndicator = 'getPublicKey' in identity\n ? { type: 'PublicKeyIdentity', publicKey: identity.getPublicKey().toDer().toString('hex') }\n : { type: 'AnonymousIdentity' };\n return identityIndicator;\n}\n/**\n * Type Guard for whether the unknown value is an IdentityDescriptor or not.\n * @param value - value to type guard\n */\nexport function isIdentityDescriptor(value) {\n var _a, _b;\n switch ((_a = value) === null || _a === void 0 ? void 0 : _a.type) {\n case 'AnonymousIdentity':\n return true;\n case 'PublicKeyIdentity':\n if (typeof ((_b = value) === null || _b === void 0 ? void 0 : _b.publicKey) !== 'string') {\n return false;\n }\n return true;\n }\n return false;\n}\n//# sourceMappingURL=auth.js.map","// tslint:enable:camel-case\n// The types of values allowed in the `request_type` field for submit requests.\nexport var SubmitRequestType;\n(function (SubmitRequestType) {\n SubmitRequestType[\"Call\"] = \"call\";\n})(SubmitRequestType || (SubmitRequestType = {}));\n//# sourceMappingURL=types.js.map","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst constants = require('./constants')\nconst SHIFT32 = constants.SHIFT32\nconst SHIFT16 = constants.SHIFT16\nconst MAX_SAFE_HIGH = 0x1fffff\n\nexports.parseHalf = function parseHalf (buf) {\n var exp, mant, sign\n sign = buf[0] & 0x80 ? -1 : 1\n exp = (buf[0] & 0x7C) >> 2\n mant = ((buf[0] & 0x03) << 8) | buf[1]\n if (!exp) {\n return sign * 5.9604644775390625e-8 * mant\n } else if (exp === 0x1f) {\n return sign * (mant ? 0 / 0 : 2e308)\n } else {\n return sign * Math.pow(2, exp - 25) * (1024 + mant)\n }\n}\n\nfunction toHex (n) {\n if (n < 16) {\n return '0' + n.toString(16)\n }\n\n return n.toString(16)\n}\n\nexports.arrayBufferToBignumber = function (buf) {\n const len = buf.byteLength\n let res = ''\n for (let i = 0; i < len; i++) {\n res += toHex(buf[i])\n }\n\n return new Bignumber(res, 16)\n}\n\n// convert an Object into a Map\nexports.buildMap = (obj) => {\n const res = new Map()\n const keys = Object.keys(obj)\n const length = keys.length\n for (let i = 0; i < length; i++) {\n res.set(keys[i], obj[keys[i]])\n }\n return res\n}\n\nexports.buildInt32 = (f, g) => {\n return f * SHIFT16 + g\n}\n\nexports.buildInt64 = (f1, f2, g1, g2) => {\n const f = exports.buildInt32(f1, f2)\n const g = exports.buildInt32(g1, g2)\n\n if (f > MAX_SAFE_HIGH) {\n return new Bignumber(f).times(SHIFT32).plus(g)\n } else {\n return (f * SHIFT32) + g\n }\n}\n\nexports.writeHalf = function writeHalf (buf, half) {\n // assume 0, -0, NaN, Infinity, and -Infinity have already been caught\n\n // HACK: everyone settle in. This isn't going to be pretty.\n // Translate cn-cbor's C code (from Carsten Borman):\n\n // uint32_t be32;\n // uint16_t be16, u16;\n // union {\n // float f;\n // uint32_t u;\n // } u32;\n // u32.f = float_val;\n\n const u32 = Buffer.allocUnsafe(4)\n u32.writeFloatBE(half, 0)\n const u = u32.readUInt32BE(0)\n\n // if ((u32.u & 0x1FFF) == 0) { /* worth trying half */\n\n // hildjj: If the lower 13 bits are 0, we won't lose anything in the conversion\n if ((u & 0x1FFF) !== 0) {\n return false\n }\n\n // int s16 = (u32.u >> 16) & 0x8000;\n // int exp = (u32.u >> 23) & 0xff;\n // int mant = u32.u & 0x7fffff;\n\n var s16 = (u >> 16) & 0x8000 // top bit is sign\n const exp = (u >> 23) & 0xff // then 5 bits of exponent\n const mant = u & 0x7fffff\n\n // if (exp == 0 && mant == 0)\n // ; /* 0.0, -0.0 */\n\n // hildjj: zeros already handled. Assert if you don't believe me.\n\n // else if (exp >= 113 && exp <= 142) /* normalized */\n // s16 += ((exp - 112) << 10) + (mant >> 13);\n if ((exp >= 113) && (exp <= 142)) {\n s16 += ((exp - 112) << 10) + (mant >> 13)\n\n // else if (exp >= 103 && exp < 113) { /* denorm, exp16 = 0 */\n // if (mant & ((1 << (126 - exp)) - 1))\n // goto float32; /* loss of precision */\n // s16 += ((mant + 0x800000) >> (126 - exp));\n } else if ((exp >= 103) && (exp < 113)) {\n if (mant & ((1 << (126 - exp)) - 1)) {\n return false\n }\n s16 += ((mant + 0x800000) >> (126 - exp))\n\n // } else if (exp == 255 && mant == 0) { /* Inf */\n // s16 += 0x7c00;\n\n // hildjj: Infinity already handled\n\n // } else\n // goto float32; /* loss of range */\n } else {\n return false\n }\n\n // ensure_writable(3);\n // u16 = s16;\n // be16 = hton16p((const uint8_t*)&u16);\n buf.writeUInt16BE(s16, 0)\n return true\n}\n\nexports.keySorter = function (a, b) {\n var lenA = a[0].byteLength\n var lenB = b[0].byteLength\n\n if (lenA > lenB) {\n return 1\n }\n\n if (lenB > lenA) {\n return -1\n }\n\n return a[0].compare(b[0])\n}\n\n// Adapted from http://www.2ality.com/2012/03/signedzero.html\nexports.isNegativeZero = (x) => {\n return x === 0 && (1 / x < 0)\n}\n\nexports.nextPowerOf2 = (n) => {\n let count = 0\n // First n in the below condition is for\n // the case where n is 0\n if (n && !(n & (n - 1))) {\n return n\n }\n\n while (n !== 0) {\n n >>= 1\n count += 1\n }\n\n return 1 << count\n}\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n var envHasBigInt64Array = typeof BigInt64Array !== 'undefined';\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n if ((a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n for (i of a.entries())\n if (!equal(i[1], b.get(i[0]))) return false;\n return true;\n }\n\n if ((a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n for (i of a.entries())\n if (!b.has(i[0])) return false;\n return true;\n }\n\n if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","import { Buffer } from 'buffer/';\nimport { AnonymousIdentity } from '../../auth';\nimport * as cbor from '../../cbor';\nimport { Principal } from '../../principal';\nimport { requestIdOf } from '../../request_id';\nimport { blobFromHex, blobFromUint8Array } from '../../types';\nimport { Expiry } from './transforms';\nimport { SubmitRequestType, } from './types';\nexport * from './transforms';\nexport var RequestStatusResponseStatus;\n(function (RequestStatusResponseStatus) {\n RequestStatusResponseStatus[\"Received\"] = \"received\";\n RequestStatusResponseStatus[\"Processing\"] = \"processing\";\n RequestStatusResponseStatus[\"Replied\"] = \"replied\";\n RequestStatusResponseStatus[\"Rejected\"] = \"rejected\";\n RequestStatusResponseStatus[\"Unknown\"] = \"unknown\";\n RequestStatusResponseStatus[\"Done\"] = \"done\";\n})(RequestStatusResponseStatus || (RequestStatusResponseStatus = {}));\n// Default delta for ingress expiry is 5 minutes.\nconst DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS = 5 * 60 * 1000;\n// Root public key for the IC, encoded as hex\nconst IC_ROOT_KEY = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814' +\n 'c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d968' +\n '5f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484' +\n 'b01291091c5f87b98883463f98091a0baaae';\nfunction getDefaultFetch() {\n const result = typeof window === 'undefined'\n ? typeof global === 'undefined'\n ? typeof self === 'undefined'\n ? undefined\n : self.fetch.bind(self)\n : global.fetch.bind(global)\n : window.fetch.bind(window);\n if (!result) {\n throw new Error('Could not find default `fetch` implementation.');\n }\n return result;\n}\n// A HTTP agent allows users to interact with a client of the internet computer\n// using the available methods. It exposes an API that closely follows the\n// public view of the internet computer, and is not intended to be exposed\n// directly to the majority of users due to its low-level interface.\n//\n// There is a pipeline to apply transformations to the request before sending\n// it to the client. This is to decouple signature, nonce generation and\n// other computations so that this class can stay as simple as possible while\n// allowing extensions.\nexport class HttpAgent {\n constructor(options = {}) {\n this._pipeline = [];\n this.rootKey = blobFromHex(IC_ROOT_KEY);\n if (options.source) {\n if (!(options.source instanceof HttpAgent)) {\n throw new Error(\"An Agent's source can only be another HttpAgent\");\n }\n this._pipeline = [...options.source._pipeline];\n this._identity = options.source._identity;\n this._fetch = options.source._fetch;\n this._host = options.source._host;\n this._credentials = options.source._credentials;\n }\n else {\n this._fetch = options.fetch || getDefaultFetch() || fetch.bind(global);\n }\n if (options.host !== undefined) {\n if (!options.host.match(/^[a-z]+:/) && typeof window !== 'undefined') {\n this._host = new URL(window.location.protocol + '//' + options.host);\n }\n else {\n this._host = new URL(options.host);\n }\n }\n else if (options.source !== undefined) {\n // Safe to ignore here.\n this._host = options.source._host;\n }\n else {\n const location = typeof window !== 'undefined' ? window.location : undefined;\n if (!location) {\n throw new Error('Must specify a host to connect to.');\n }\n this._host = new URL(location + '');\n }\n if (options.credentials) {\n const { name, password } = options.credentials;\n this._credentials = `${name}${password ? ':' + password : ''}`;\n }\n this._identity = Promise.resolve(options.identity || new AnonymousIdentity());\n }\n addTransform(fn, priority = fn.priority || 0) {\n // Keep the pipeline sorted at all time, by priority.\n const i = this._pipeline.findIndex(x => (x.priority || 0) < priority);\n this._pipeline.splice(i >= 0 ? i : this._pipeline.length, 0, Object.assign(fn, { priority }));\n }\n async getPrincipal() {\n return (await this._identity).getPrincipal();\n }\n async call(canisterId, options, identity) {\n const id = await (identity !== undefined ? identity : this._identity);\n const canister = Principal.from(canisterId);\n const ecid = options.effectiveCanisterId\n ? Principal.from(options.effectiveCanisterId)\n : canister;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const submit = {\n request_type: SubmitRequestType.Call,\n canister_id: canister,\n method_name: options.methodName,\n arg: options.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = (await this._transform({\n request: {\n body: null,\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"call\" /* Call */,\n body: submit,\n }));\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n // Run both in parallel. The fetch is quite expensive, so we have plenty of time to\n // calculate the requestId locally.\n const [response, requestId] = await Promise.all([\n this._fetch('' + new URL(`/api/v2/canister/${ecid.toText()}/call`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body })),\n requestIdOf(submit),\n ]);\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return {\n requestId,\n response: {\n ok: response.ok,\n status: response.status,\n statusText: response.statusText,\n },\n };\n }\n async query(canisterId, fields, identity) {\n const id = await (identity || this._identity);\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n const request = {\n request_type: \"query\" /* Query */,\n canister_id: canister,\n method_name: fields.methodName,\n arg: fields.arg,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n };\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read\" /* Query */,\n body: request,\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister.toText()}/query`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async readState(canisterId, fields, identity) {\n const canister = typeof canisterId === 'string' ? Principal.fromText(canisterId) : canisterId;\n const id = await (identity || this._identity);\n const sender = (id === null || id === void 0 ? void 0 : id.getPrincipal()) || Principal.anonymous();\n // TODO: remove this any. This can be a Signed or UnSigned request.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let transformedRequest = await this._transform({\n request: {\n method: 'POST',\n headers: Object.assign({ 'Content-Type': 'application/cbor' }, (this._credentials ? { Authorization: 'Basic ' + btoa(this._credentials) } : {})),\n },\n endpoint: \"read_state\" /* ReadState */,\n body: {\n request_type: \"read_state\" /* ReadState */,\n paths: fields.paths,\n sender: sender.toBlob(),\n ingress_expiry: new Expiry(DEFAULT_INGRESS_EXPIRY_DELTA_IN_MSECS),\n },\n });\n // Apply transform for identity.\n transformedRequest = await id.transformRequest(transformedRequest);\n const body = cbor.encode(transformedRequest.body);\n const response = await this._fetch('' + new URL(`/api/v2/canister/${canister}/read_state`, this._host), Object.assign(Object.assign({}, transformedRequest.request), { body }));\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n return cbor.decode(Buffer.from(await response.arrayBuffer()));\n }\n async status() {\n const headers = this._credentials\n ? {\n Authorization: 'Basic ' + btoa(this._credentials),\n }\n : {};\n const response = await this._fetch('' + new URL(`/api/v2/status`, this._host), { headers });\n if (!response.ok) {\n throw new Error(`Server returned an error:\\n` +\n ` Code: ${response.status} (${response.statusText})\\n` +\n ` Body: ${await response.text()}\\n`);\n }\n const buffer = await response.arrayBuffer();\n return cbor.decode(new Uint8Array(buffer));\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n this.rootKey = blobFromUint8Array((await this.status()).root_key);\n return this.rootKey;\n }\n _transform(request) {\n let p = Promise.resolve(request);\n for (const fn of this._pipeline) {\n p = p.then(r => fn(r).then(r2 => r2 || r));\n }\n return p;\n }\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\nconst { Buffer } = require('buffer')\nconst ieee754 = require('ieee754')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst parser = require('./decoder.asm')\nconst utils = require('./utils')\nconst c = require('./constants')\nconst Simple = require('./simple')\nconst Tagged = require('./tagged')\nconst { URL } = require('iso-url')\n\n/**\n * Transform binary cbor data into JavaScript objects.\n */\nclass Decoder {\n /**\n * @param {Object} [opts={}]\n * @param {number} [opts.size=65536] - Size of the allocated heap.\n */\n constructor (opts) {\n opts = opts || {}\n\n if (!opts.size || opts.size < 0x10000) {\n opts.size = 0x10000\n } else {\n // Ensure the size is a power of 2\n opts.size = utils.nextPowerOf2(opts.size)\n }\n\n // Heap use to share the input with the parser\n this._heap = new ArrayBuffer(opts.size)\n this._heap8 = new Uint8Array(this._heap)\n this._buffer = Buffer.from(this._heap)\n\n this._reset()\n\n // Known tags\n this._knownTags = Object.assign({\n 0: (val) => new Date(val),\n 1: (val) => new Date(val * 1000),\n 2: (val) => utils.arrayBufferToBignumber(val),\n 3: (val) => c.NEG_ONE.minus(utils.arrayBufferToBignumber(val)),\n 4: (v) => {\n // const v = new Uint8Array(val)\n return c.TEN.pow(v[0]).times(v[1])\n },\n 5: (v) => {\n // const v = new Uint8Array(val)\n return c.TWO.pow(v[0]).times(v[1])\n },\n 32: (val) => new URL(val),\n 35: (val) => new RegExp(val)\n }, opts.tags)\n\n // Initialize asm based parser\n this.parser = parser(global, {\n // eslint-disable-next-line no-console\n log: console.log.bind(console),\n pushInt: this.pushInt.bind(this),\n pushInt32: this.pushInt32.bind(this),\n pushInt32Neg: this.pushInt32Neg.bind(this),\n pushInt64: this.pushInt64.bind(this),\n pushInt64Neg: this.pushInt64Neg.bind(this),\n pushFloat: this.pushFloat.bind(this),\n pushFloatSingle: this.pushFloatSingle.bind(this),\n pushFloatDouble: this.pushFloatDouble.bind(this),\n pushTrue: this.pushTrue.bind(this),\n pushFalse: this.pushFalse.bind(this),\n pushUndefined: this.pushUndefined.bind(this),\n pushNull: this.pushNull.bind(this),\n pushInfinity: this.pushInfinity.bind(this),\n pushInfinityNeg: this.pushInfinityNeg.bind(this),\n pushNaN: this.pushNaN.bind(this),\n pushNaNNeg: this.pushNaNNeg.bind(this),\n pushArrayStart: this.pushArrayStart.bind(this),\n pushArrayStartFixed: this.pushArrayStartFixed.bind(this),\n pushArrayStartFixed32: this.pushArrayStartFixed32.bind(this),\n pushArrayStartFixed64: this.pushArrayStartFixed64.bind(this),\n pushObjectStart: this.pushObjectStart.bind(this),\n pushObjectStartFixed: this.pushObjectStartFixed.bind(this),\n pushObjectStartFixed32: this.pushObjectStartFixed32.bind(this),\n pushObjectStartFixed64: this.pushObjectStartFixed64.bind(this),\n pushByteString: this.pushByteString.bind(this),\n pushByteStringStart: this.pushByteStringStart.bind(this),\n pushUtf8String: this.pushUtf8String.bind(this),\n pushUtf8StringStart: this.pushUtf8StringStart.bind(this),\n pushSimpleUnassigned: this.pushSimpleUnassigned.bind(this),\n pushTagUnassigned: this.pushTagUnassigned.bind(this),\n pushTagStart: this.pushTagStart.bind(this),\n pushTagStart4: this.pushTagStart4.bind(this),\n pushTagStart8: this.pushTagStart8.bind(this),\n pushBreak: this.pushBreak.bind(this)\n }, this._heap)\n }\n\n get _depth () {\n return this._parents.length\n }\n\n get _currentParent () {\n return this._parents[this._depth - 1]\n }\n\n get _ref () {\n return this._currentParent.ref\n }\n\n // Finish the current parent\n _closeParent () {\n var p = this._parents.pop()\n\n if (p.length > 0) {\n throw new Error(`Missing ${p.length} elements`)\n }\n\n switch (p.type) {\n case c.PARENT.TAG:\n this._push(\n this.createTag(p.ref[0], p.ref[1])\n )\n break\n case c.PARENT.BYTE_STRING:\n this._push(this.createByteString(p.ref, p.length))\n break\n case c.PARENT.UTF8_STRING:\n this._push(this.createUtf8String(p.ref, p.length))\n break\n case c.PARENT.MAP:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createMap(p.ref, p.length))\n break\n case c.PARENT.OBJECT:\n if (p.values % 2 > 0) {\n throw new Error('Odd number of elements in the map')\n }\n this._push(this.createObject(p.ref, p.length))\n break\n case c.PARENT.ARRAY:\n this._push(this.createArray(p.ref, p.length))\n break\n default:\n break\n }\n\n if (this._currentParent && this._currentParent.type === c.PARENT.TAG) {\n this._dec()\n }\n }\n\n // Reduce the expected length of the current parent by one\n _dec () {\n const p = this._currentParent\n // The current parent does not know the epxected child length\n\n if (p.length < 0) {\n return\n }\n\n p.length--\n\n // All children were seen, we can close the current parent\n if (p.length === 0) {\n this._closeParent()\n }\n }\n\n // Push any value to the current parent\n _push (val, hasChildren) {\n const p = this._currentParent\n p.values++\n\n switch (p.type) {\n case c.PARENT.ARRAY:\n case c.PARENT.BYTE_STRING:\n case c.PARENT.UTF8_STRING:\n if (p.length > -1) {\n this._ref[this._ref.length - p.length] = val\n } else {\n this._ref.push(val)\n }\n this._dec()\n break\n case c.PARENT.OBJECT:\n if (p.tmpKey != null) {\n this._ref[p.tmpKey] = val\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n\n if (typeof p.tmpKey !== 'string') {\n // too bad, convert to a Map\n p.type = c.PARENT.MAP\n p.ref = utils.buildMap(p.ref)\n }\n }\n break\n case c.PARENT.MAP:\n if (p.tmpKey != null) {\n this._ref.set(p.tmpKey, val)\n p.tmpKey = null\n this._dec()\n } else {\n p.tmpKey = val\n }\n break\n case c.PARENT.TAG:\n this._ref.push(val)\n if (!hasChildren) {\n this._dec()\n }\n break\n default:\n throw new Error('Unknown parent type')\n }\n }\n\n // Create a new parent in the parents list\n _createParent (obj, type, len) {\n this._parents[this._depth] = {\n type: type,\n length: len,\n ref: obj,\n values: 0,\n tmpKey: null\n }\n }\n\n // Reset all state back to the beginning, also used for initiatlization\n _reset () {\n this._res = []\n this._parents = [{\n type: c.PARENT.ARRAY,\n length: -1,\n ref: this._res,\n values: 0,\n tmpKey: null\n }]\n }\n\n // -- Interface to customize deoding behaviour\n createTag (tagNumber, value) {\n const typ = this._knownTags[tagNumber]\n\n if (!typ) {\n return new Tagged(tagNumber, value)\n }\n\n return typ(value)\n }\n\n createMap (obj, len) {\n return obj\n }\n\n createObject (obj, len) {\n return obj\n }\n\n createArray (arr, len) {\n return arr\n }\n\n createByteString (raw, len) {\n return Buffer.concat(raw)\n }\n\n createByteStringFromHeap (start, end) {\n if (start === end) {\n return Buffer.alloc(0)\n }\n\n return Buffer.from(this._heap.slice(start, end))\n }\n\n createInt (val) {\n return val\n }\n\n createInt32 (f, g) {\n return utils.buildInt32(f, g)\n }\n\n createInt64 (f1, f2, g1, g2) {\n return utils.buildInt64(f1, f2, g1, g2)\n }\n\n createFloat (val) {\n return val\n }\n\n createFloatSingle (a, b, c, d) {\n return ieee754.read([a, b, c, d], 0, false, 23, 4)\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n return ieee754.read([a, b, c, d, e, f, g, h], 0, false, 52, 8)\n }\n\n createInt32Neg (f, g) {\n return -1 - utils.buildInt32(f, g)\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n const f = utils.buildInt32(f1, f2)\n const g = utils.buildInt32(g1, g2)\n\n if (f > c.MAX_SAFE_HIGH) {\n return c.NEG_ONE.minus(new Bignumber(f).times(c.SHIFT32).plus(g))\n }\n\n return -1 - ((f * c.SHIFT32) + g)\n }\n\n createTrue () {\n return true\n }\n\n createFalse () {\n return false\n }\n\n createNull () {\n return null\n }\n\n createUndefined () {\n return undefined\n }\n\n createInfinity () {\n return Infinity\n }\n\n createInfinityNeg () {\n return -Infinity\n }\n\n createNaN () {\n return NaN\n }\n\n createNaNNeg () {\n return -NaN\n }\n\n createUtf8String (raw, len) {\n return raw.join('')\n }\n\n createUtf8StringFromHeap (start, end) {\n if (start === end) {\n return ''\n }\n\n return this._buffer.toString('utf8', start, end)\n }\n\n createSimpleUnassigned (val) {\n return new Simple(val)\n }\n\n // -- Interface for decoder.asm.js\n\n pushInt (val) {\n this._push(this.createInt(val))\n }\n\n pushInt32 (f, g) {\n this._push(this.createInt32(f, g))\n }\n\n pushInt64 (f1, f2, g1, g2) {\n this._push(this.createInt64(f1, f2, g1, g2))\n }\n\n pushFloat (val) {\n this._push(this.createFloat(val))\n }\n\n pushFloatSingle (a, b, c, d) {\n this._push(this.createFloatSingle(a, b, c, d))\n }\n\n pushFloatDouble (a, b, c, d, e, f, g, h) {\n this._push(this.createFloatDouble(a, b, c, d, e, f, g, h))\n }\n\n pushInt32Neg (f, g) {\n this._push(this.createInt32Neg(f, g))\n }\n\n pushInt64Neg (f1, f2, g1, g2) {\n this._push(this.createInt64Neg(f1, f2, g1, g2))\n }\n\n pushTrue () {\n this._push(this.createTrue())\n }\n\n pushFalse () {\n this._push(this.createFalse())\n }\n\n pushNull () {\n this._push(this.createNull())\n }\n\n pushUndefined () {\n this._push(this.createUndefined())\n }\n\n pushInfinity () {\n this._push(this.createInfinity())\n }\n\n pushInfinityNeg () {\n this._push(this.createInfinityNeg())\n }\n\n pushNaN () {\n this._push(this.createNaN())\n }\n\n pushNaNNeg () {\n this._push(this.createNaNNeg())\n }\n\n pushArrayStart () {\n this._createParent([], c.PARENT.ARRAY, -1)\n }\n\n pushArrayStartFixed (len) {\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createArrayStartFixed(len)\n }\n\n pushArrayStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createArrayStartFixed(len)\n }\n\n pushObjectStart () {\n this._createObjectStartFixed(-1)\n }\n\n pushObjectStartFixed (len) {\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed32 (len1, len2) {\n const len = utils.buildInt32(len1, len2)\n this._createObjectStartFixed(len)\n }\n\n pushObjectStartFixed64 (len1, len2, len3, len4) {\n const len = utils.buildInt64(len1, len2, len3, len4)\n this._createObjectStartFixed(len)\n }\n\n pushByteStringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.BYTE_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushByteString (start, end) {\n this._push(this.createByteStringFromHeap(start, end))\n }\n\n pushUtf8StringStart () {\n this._parents[this._depth] = {\n type: c.PARENT.UTF8_STRING,\n length: -1,\n ref: [],\n values: 0,\n tmpKey: null\n }\n }\n\n pushUtf8String (start, end) {\n this._push(this.createUtf8StringFromHeap(start, end))\n }\n\n pushSimpleUnassigned (val) {\n this._push(this.createSimpleUnassigned(val))\n }\n\n pushTagStart (tag) {\n this._parents[this._depth] = {\n type: c.PARENT.TAG,\n length: 1,\n ref: [tag]\n }\n }\n\n pushTagStart4 (f, g) {\n this.pushTagStart(utils.buildInt32(f, g))\n }\n\n pushTagStart8 (f1, f2, g1, g2) {\n this.pushTagStart(utils.buildInt64(f1, f2, g1, g2))\n }\n\n pushTagUnassigned (tagNumber) {\n this._push(this.createTag(tagNumber))\n }\n\n pushBreak () {\n if (this._currentParent.length > -1) {\n throw new Error('Unexpected break')\n }\n\n this._closeParent()\n }\n\n _createObjectStartFixed (len) {\n if (len === 0) {\n this._push(this.createObject({}))\n return\n }\n\n this._createParent({}, c.PARENT.OBJECT, len)\n }\n\n _createArrayStartFixed (len) {\n if (len === 0) {\n this._push(this.createArray([]))\n return\n }\n\n this._createParent(new Array(len), c.PARENT.ARRAY, len)\n }\n\n _decode (input) {\n if (input.byteLength === 0) {\n throw new Error('Input too short')\n }\n\n this._reset()\n this._heap8.set(input)\n const code = this.parser.parse(input.byteLength)\n\n if (this._depth > 1) {\n while (this._currentParent.length === 0) {\n this._closeParent()\n }\n if (this._depth > 1) {\n throw new Error('Undeterminated nesting')\n }\n }\n\n if (code > 0) {\n throw new Error('Failed to parse')\n }\n\n if (this._res.length === 0) {\n throw new Error('No valid result')\n }\n }\n\n // -- Public Interface\n\n decodeFirst (input) {\n this._decode(input)\n\n return this._res[0]\n }\n\n decodeAll (input) {\n this._decode(input)\n\n return this._res\n }\n\n /**\n * Decode the first cbor object.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {*}\n */\n static decode (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeFirst(input)\n }\n\n /**\n * Decode all cbor objects.\n *\n * @param {Buffer|string} input\n * @param {string} [enc='hex'] - Encoding used if a string is passed.\n * @returns {Array<*>}\n */\n static decodeAll (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Decoder({ size: input.length })\n return dec.decodeAll(input)\n }\n}\n\nDecoder.decodeFirst = Decoder.decode\n\nmodule.exports = Decoder\n","'use strict'\n\nconst constants = require('./constants')\nconst MT = constants.MT\nconst SIMPLE = constants.SIMPLE\nconst SYMS = constants.SYMS\n\n/**\n * A CBOR Simple Value that does not map onto a known constant.\n */\nclass Simple {\n /**\n * Creates an instance of Simple.\n *\n * @param {integer} value - the simple value's integer value\n */\n constructor (value) {\n if (typeof value !== 'number') {\n throw new Error('Invalid Simple type: ' + (typeof value))\n }\n if ((value < 0) || (value > 255) || ((value | 0) !== value)) {\n throw new Error('value must be a small positive integer: ' + value)\n }\n this.value = value\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n toString () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Debug string for simple value\n *\n * @returns {string} simple(value)\n */\n inspect () {\n return 'simple(' + this.value + ')'\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n return gen._pushInt(this.value, MT.SIMPLE_FLOAT)\n }\n\n /**\n * Is the given object a Simple?\n *\n * @param {any} obj - object to test\n * @returns {bool} - is it Simple?\n */\n static isSimple (obj) {\n return obj instanceof Simple\n }\n\n /**\n * Decode from the CBOR additional information into a JavaScript value.\n * If the CBOR item has no parent, return a \"safe\" symbol instead of\n * `null` or `undefined`, so that the value can be passed through a\n * stream in object mode.\n *\n * @param {Number} val - the CBOR additional info to convert\n * @param {bool} hasParent - Does the CBOR item have a parent?\n * @returns {(null|undefined|Boolean|Symbol)} - the decoded value\n */\n static decode (val, hasParent) {\n if (hasParent == null) {\n hasParent = true\n }\n switch (val) {\n case SIMPLE.FALSE:\n return false\n case SIMPLE.TRUE:\n return true\n case SIMPLE.NULL:\n if (hasParent) {\n return null\n } else {\n return SYMS.NULL\n }\n case SIMPLE.UNDEFINED:\n if (hasParent) {\n return undefined\n } else {\n return SYMS.UNDEFINED\n }\n case -1:\n if (!hasParent) {\n throw new Error('Invalid BREAK')\n }\n return SYMS.BREAK\n default:\n return new Simple(val)\n }\n }\n}\n\nmodule.exports = Simple\n","'use strict'\n\n/**\n * A CBOR tagged item, where the tag does not have semantics specified at the\n * moment, or those semantics threw an error during parsing. Typically this will\n * be an extension point you're not yet expecting.\n */\nclass Tagged {\n /**\n * Creates an instance of Tagged.\n *\n * @param {Number} tag - the number of the tag\n * @param {any} value - the value inside the tag\n * @param {Error} err - the error that was thrown parsing the tag, or null\n */\n constructor (tag, value, err) {\n this.tag = tag\n this.value = value\n this.err = err\n if (typeof this.tag !== 'number') {\n throw new Error('Invalid tag type (' + (typeof this.tag) + ')')\n }\n if ((this.tag < 0) || ((this.tag | 0) !== this.tag)) {\n throw new Error('Tag must be a positive integer: ' + this.tag)\n }\n }\n\n /**\n * Convert to a String\n *\n * @returns {String} string of the form '1(2)'\n */\n toString () {\n return `${this.tag}(${JSON.stringify(this.value)})`\n }\n\n /**\n * Push the simple value onto the CBOR stream\n *\n * @param {cbor.Encoder} gen The generator to push onto\n * @returns {number}\n */\n encodeCBOR (gen) {\n gen._pushTag(this.tag)\n return gen.pushAny(this.value)\n }\n\n /**\n * If we have a converter for this type, do the conversion. Some converters\n * are built-in. Additional ones can be passed in. If you want to remove\n * a built-in converter, pass a converter in whose value is 'null' instead\n * of a function.\n *\n * @param {Object} converters - keys in the object are a tag number, the value\n * is a function that takes the decoded CBOR and returns a JavaScript value\n * of the appropriate type. Throw an exception in the function on errors.\n * @returns {any} - the converted item\n */\n convert (converters) {\n var er, f\n f = converters != null ? converters[this.tag] : undefined\n if (typeof f !== 'function') {\n f = Tagged['_tag' + this.tag]\n if (typeof f !== 'function') {\n return this\n }\n }\n try {\n return f.call(Tagged, this.value)\n } catch (error) {\n er = error\n this.err = er\n return this\n }\n }\n}\n\nmodule.exports = Tagged\n","'use strict';\n\nconst {\n URLWithLegacySupport,\n format,\n URLSearchParams,\n defaultBase\n} = require('./src/url');\nconst relative = require('./src/relative');\n\nmodule.exports = {\n URL: URLWithLegacySupport,\n URLSearchParams,\n format,\n relative,\n defaultBase\n};\n","'use strict';\n\nconst defaultBase = self.location ?\n self.location.protocol + '//' + self.location.host :\n '';\nconst URL = self.URL;\n\nclass URLWithLegacySupport {\n constructor(url = '', base = defaultBase) {\n this.super = new URL(url, base);\n this.path = this.pathname + this.search;\n this.auth =\n this.username && this.password ?\n this.username + ':' + this.password :\n null;\n\n this.query =\n this.search && this.search.startsWith('?') ?\n this.search.slice(1) :\n null;\n }\n\n get hash() {\n return this.super.hash;\n }\n get host() {\n return this.super.host;\n }\n get hostname() {\n return this.super.hostname;\n }\n get href() {\n return this.super.href;\n }\n get origin() {\n return this.super.origin;\n }\n get password() {\n return this.super.password;\n }\n get pathname() {\n return this.super.pathname;\n }\n get port() {\n return this.super.port;\n }\n get protocol() {\n return this.super.protocol;\n }\n get search() {\n return this.super.search;\n }\n get searchParams() {\n return this.super.searchParams;\n }\n get username() {\n return this.super.username;\n }\n\n set hash(hash) {\n this.super.hash = hash;\n }\n set host(host) {\n this.super.host = host;\n }\n set hostname(hostname) {\n this.super.hostname = hostname;\n }\n set href(href) {\n this.super.href = href;\n }\n set origin(origin) {\n this.super.origin = origin;\n }\n set password(password) {\n this.super.password = password;\n }\n set pathname(pathname) {\n this.super.pathname = pathname;\n }\n set port(port) {\n this.super.port = port;\n }\n set protocol(protocol) {\n this.super.protocol = protocol;\n }\n set search(search) {\n this.super.search = search;\n }\n set searchParams(searchParams) {\n this.super.searchParams = searchParams;\n }\n set username(username) {\n this.super.username = username;\n }\n\n createObjectURL(o) {\n return this.super.createObjectURL(o);\n }\n revokeObjectURL(o) {\n this.super.revokeObjectURL(o);\n }\n toJSON() {\n return this.super.toJSON();\n }\n toString() {\n return this.super.toString();\n }\n format() {\n return this.toString();\n }\n}\n\nfunction format(obj) {\n if (typeof obj === 'string') {\n const url = new URL(obj);\n\n return url.toString();\n }\n\n if (!(obj instanceof URL)) {\n const userPass =\n obj.username && obj.password ?\n `${obj.username}:${obj.password}@` :\n '';\n const auth = obj.auth ? obj.auth + '@' : '';\n const port = obj.port ? ':' + obj.port : '';\n const protocol = obj.protocol ? obj.protocol + '//' : '';\n const host = obj.host || '';\n const hostname = obj.hostname || '';\n const search = obj.search || (obj.query ? '?' + obj.query : '');\n const hash = obj.hash || '';\n const pathname = obj.pathname || '';\n const path = obj.path || pathname + search;\n\n return `${protocol}${userPass || auth}${host ||\n hostname + port}${path}${hash}`;\n }\n}\n\nmodule.exports = {\n URLWithLegacySupport,\n URLSearchParams: self.URLSearchParams,\n defaultBase,\n format\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst MAX_U64_NUMBER = 0x20000000000000;\nfunction _concat(a, ...args) {\n const newBuffer = new Uint8Array(a.byteLength + args.reduce((acc, b) => acc + b.byteLength, 0));\n newBuffer.set(new Uint8Array(a), 0);\n let i = a.byteLength;\n for (const b of args) {\n newBuffer.set(new Uint8Array(b), i);\n i += b.byteLength;\n }\n return newBuffer.buffer;\n}\nfunction _serializeValue(major, minor, value) {\n // Remove everything that's not an hexadecimal character. These are not\n // considered errors since the value was already validated and they might\n // be number decimals or sign.\n value = value.replace(/[^0-9a-fA-F]/g, \"\");\n // Create the buffer from the value with left padding with 0.\n const length = 2 ** (minor - 24 /* Int8 */);\n value = value.slice(-length * 2).padStart(length * 2, \"0\");\n const bytes = [(major << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n}\nfunction _serializeNumber(major, value) {\n if (value < 24) {\n return new Uint8Array([(major << 5) + value]).buffer;\n }\n else {\n const minor = value <= 0xff\n ? 24 /* Int8 */\n : value <= 0xffff\n ? 25 /* Int16 */\n : value <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n return _serializeValue(major, minor, value.toString(16));\n }\n}\nfunction _serializeString(str) {\n const utf8 = [];\n for (let i = 0; i < str.length; i++) {\n let charcode = str.charCodeAt(i);\n if (charcode < 0x80) {\n utf8.push(charcode);\n }\n else if (charcode < 0x800) {\n utf8.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\n }\n else if (charcode < 0xd800 || charcode >= 0xe000) {\n utf8.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n else {\n // Surrogate pair\n i++;\n charcode = ((charcode & 0x3ff) << 10) | (str.charCodeAt(i) & 0x3ff);\n utf8.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\n }\n }\n return _concat(new Uint8Array(_serializeNumber(3 /* TextString */, str.length)), new Uint8Array(utf8));\n}\n/**\n * Tag a value.\n */\nfunction tagged(tag, value) {\n if (tag == 0xd9d9f7) {\n return _concat(new Uint8Array([0xd9, 0xd9, 0xf7]), value);\n }\n if (tag < 24) {\n return _concat(new Uint8Array([(6 /* Tag */ << 5) + tag]), value);\n }\n else {\n const minor = tag <= 0xff\n ? 24 /* Int8 */\n : tag <= 0xffff\n ? 25 /* Int16 */\n : tag <= 0xffffffff\n ? 26 /* Int32 */\n : 27 /* Int64 */;\n const length = 2 ** (minor - 24 /* Int8 */);\n const value = tag\n .toString(16)\n .slice(-length * 2)\n .padStart(length * 2, \"0\");\n const bytes = [(6 /* Tag */ << 5) + minor].concat(value.match(/../g).map((byte) => parseInt(byte, 16)));\n return new Uint8Array(bytes).buffer;\n }\n}\nexports.tagged = tagged;\n/**\n * Set the raw bytes contained by this value. This should only be used with another\n * CborValue, or if you are implementing extensions to CBOR.\n * @param bytes A buffer containing the value.\n */\nfunction raw(bytes) {\n return new Uint8Array(bytes).buffer;\n}\nexports.raw = raw;\n/**\n * Encode a number that is between [0, 23].\n * @param n\n */\nfunction uSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n n = Math.min(Math.max(0, n), 23); // Clamp it.\n const bytes = [(0 /* UnsignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.uSmall = uSmall;\nfunction u8(u8, radix) {\n // Force u8 into a number, and validate it.\n u8 = parseInt(\"\" + u8, radix);\n if (isNaN(u8)) {\n throw new RangeError(\"Invalid number.\");\n }\n u8 = Math.min(Math.max(0, u8), 0xff); // Clamp it.\n u8 = u8.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 24 /* Int8 */, u8);\n}\nexports.u8 = u8;\nfunction u16(u16, radix) {\n // Force u16 into a number, and validate it.\n u16 = parseInt(\"\" + u16, radix);\n if (isNaN(u16)) {\n throw new RangeError(\"Invalid number.\");\n }\n u16 = Math.min(Math.max(0, u16), 0xffff); // Clamp it.\n u16 = u16.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 25 /* Int16 */, u16);\n}\nexports.u16 = u16;\nfunction u32(u32, radix) {\n // Force u32 into a number, and validate it.\n u32 = parseInt(\"\" + u32, radix);\n if (isNaN(u32)) {\n throw new RangeError(\"Invalid number.\");\n }\n u32 = Math.min(Math.max(0, u32), 0xffffffff); // Clamp it.\n u32 = u32.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 26 /* Int32 */, u32);\n}\nexports.u32 = u32;\nfunction u64(u64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof u64 == \"string\" && radix == 16) {\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (u64.match(/[^0-9a-fA-F]/)) {\n throw new RangeError(\"Invalid number.\");\n }\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n }\n // Force u64 into a number, and validate it.\n u64 = parseInt(\"\" + u64, radix);\n if (isNaN(u64)) {\n throw new RangeError(\"Invalid number.\");\n }\n u64 = Math.min(Math.max(0, u64), MAX_U64_NUMBER); // Clamp it to actual limit.\n u64 = u64.toString(16);\n return _serializeValue(0 /* UnsignedInteger */, 27 /* Int64 */, u64);\n}\nexports.u64 = u64;\n/**\n * Encode a negative number that is between [-24, -1].\n */\nfunction iSmall(n) {\n if (isNaN(n)) {\n throw new RangeError(\"Invalid number.\");\n }\n if (n === 0) {\n return uSmall(0);\n }\n // Negative n, clamped to [1, 24], minus 1 (there's no negative 0).\n n = Math.min(Math.max(0, -n), 24) - 1;\n const bytes = [(1 /* SignedInteger */ << 5) + n];\n return new Uint8Array(bytes).buffer;\n}\nexports.iSmall = iSmall;\nfunction i8(i8, radix) {\n // Force i8 into a number, and validate it.\n i8 = parseInt(\"\" + i8, radix);\n if (isNaN(i8)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i8 = Math.min(Math.max(0, -i8 - 1), 0xff);\n i8 = i8.toString(16);\n return _serializeValue(1 /* SignedInteger */, 24 /* Int8 */, i8);\n}\nexports.i8 = i8;\nfunction i16(i16, radix) {\n // Force i16 into a number, and validate it.\n i16 = parseInt(\"\" + i16, radix);\n if (isNaN(i16)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i16 = Math.min(Math.max(0, -i16 - 1), 0xffff);\n i16 = i16.toString(16);\n return _serializeValue(1 /* SignedInteger */, 25 /* Int16 */, i16);\n}\nexports.i16 = i16;\nfunction i32(i32, radix) {\n // Force i32 into a number, and validate it.\n i32 = parseInt(\"\" + i32, radix);\n if (isNaN(i32)) {\n throw new RangeError(\"Invalid number.\");\n }\n // Negative n, clamped, minus 1 (there's no negative 0).\n i32 = Math.min(Math.max(0, -i32 - 1), 0xffffffff);\n i32 = i32.toString(16);\n return _serializeValue(1 /* SignedInteger */, 26 /* Int32 */, i32);\n}\nexports.i32 = i32;\nfunction i64(i64, radix) {\n // Special consideration for numbers that might be larger than expected.\n if (typeof i64 == \"string\" && radix == 16) {\n if (i64.startsWith(\"-\")) {\n i64 = i64.slice(1);\n }\n else {\n // Clamp it.\n i64 = \"0\";\n }\n // This is the only case where we guarantee we'll encode the number directly.\n // Validate it's all hexadecimal first.\n if (i64.match(/[^0-9a-fA-F]/) || i64.length > 16) {\n throw new RangeError(\"Invalid number.\");\n }\n // We need to do -1 to the number.\n let done = false;\n let newI64 = i64.split(\"\").reduceRight((acc, x) => {\n if (done) {\n return x + acc;\n }\n let n = parseInt(x, 16) - 1;\n if (n >= 0) {\n done = true;\n return n.toString(16) + acc;\n }\n else {\n return \"f\" + acc;\n }\n }, \"\");\n if (!done) {\n // This number was 0.\n return u64(0);\n }\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, newI64);\n }\n // Force i64 into a number, and validate it.\n i64 = parseInt(\"\" + i64, radix);\n if (isNaN(i64)) {\n throw new RangeError(\"Invalid number.\");\n }\n i64 = Math.min(Math.max(0, -i64 - 1), 0x20000000000000); // Clamp it to actual.\n i64 = i64.toString(16);\n return _serializeValue(1 /* SignedInteger */, 27 /* Int64 */, i64);\n}\nexports.i64 = i64;\n/**\n * Encode a number using the smallest amount of bytes, by calling the methods\n * above. e.g. If the number fits in a u8, it will use that.\n */\nfunction number(n) {\n if (n >= 0) {\n if (n < 24) {\n return uSmall(n);\n }\n else if (n <= 0xff) {\n return u8(n);\n }\n else if (n <= 0xffff) {\n return u16(n);\n }\n else if (n <= 0xffffffff) {\n return u32(n);\n }\n else {\n return u64(n);\n }\n }\n else {\n if (n >= -24) {\n return iSmall(n);\n }\n else if (n >= -0xff) {\n return i8(n);\n }\n else if (n >= -0xffff) {\n return i16(n);\n }\n else if (n >= -0xffffffff) {\n return i32(n);\n }\n else {\n return i64(n);\n }\n }\n}\nexports.number = number;\n/**\n * Encode a byte array. This is different than the `raw()` method.\n */\nfunction bytes(bytes) {\n return _concat(_serializeNumber(2 /* ByteString */, bytes.byteLength), bytes);\n}\nexports.bytes = bytes;\n/**\n * Encode a JavaScript string.\n */\nfunction string(str) {\n return _serializeString(str);\n}\nexports.string = string;\n/**\n * Encode an array of cbor values.\n */\nfunction array(items) {\n return _concat(_serializeNumber(4 /* Array */, items.length), ...items);\n}\nexports.array = array;\n/**\n * Encode a map of key-value pairs. The keys are string, and the values are CBOR\n * encoded.\n */\nfunction map(items, stable = false) {\n if (!(items instanceof Map)) {\n items = new Map(Object.entries(items));\n }\n let entries = Array.from(items.entries());\n if (stable) {\n entries = entries.sort(([keyA], [keyB]) => keyA.localeCompare(keyB));\n }\n return _concat(_serializeNumber(5 /* Map */, items.size), ...entries.map(([k, v]) => _concat(_serializeString(k), v)));\n}\nexports.map = map;\n/**\n * Encode a single (32 bits) precision floating point number.\n */\nfunction singleFloat(f) {\n const single = new Float32Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 26]), new Uint8Array(single.buffer));\n}\nexports.singleFloat = singleFloat;\n/**\n * Encode a double (64 bits) precision floating point number.\n */\nfunction doubleFloat(f) {\n const single = new Float64Array([f]);\n return _concat(new Uint8Array([(7 /* SimpleValue */ << 5) + 27]), new Uint8Array(single.buffer));\n}\nexports.doubleFloat = doubleFloat;\nfunction bool(v) {\n return v ? true_() : false_();\n}\nexports.bool = bool;\n/**\n * Encode the boolean true.\n */\nfunction true_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 21]));\n}\nexports.true_ = true_;\n/**\n * Encode the boolean false.\n */\nfunction false_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 20]));\n}\nexports.false_ = false_;\n/**\n * Encode the constant null.\n */\nfunction null_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 22]));\n}\nexports.null_ = null_;\n/**\n * Encode the constant undefined.\n */\nfunction undefined_() {\n return raw(new Uint8Array([(7 /* SimpleValue */ << 5) + 23]));\n}\nexports.undefined_ = undefined_;\n//# sourceMappingURL=value.js.map","import { Principal, } from '..';\nexport var ProxyMessageKind;\n(function (ProxyMessageKind) {\n ProxyMessageKind[\"Error\"] = \"err\";\n ProxyMessageKind[\"GetPrincipal\"] = \"gp\";\n ProxyMessageKind[\"GetPrincipalResponse\"] = \"gpr\";\n ProxyMessageKind[\"Query\"] = \"q\";\n ProxyMessageKind[\"QueryResponse\"] = \"qr\";\n ProxyMessageKind[\"Call\"] = \"c\";\n ProxyMessageKind[\"CallResponse\"] = \"cr\";\n ProxyMessageKind[\"ReadState\"] = \"rs\";\n ProxyMessageKind[\"ReadStateResponse\"] = \"rsr\";\n ProxyMessageKind[\"Status\"] = \"s\";\n ProxyMessageKind[\"StatusResponse\"] = \"sr\";\n})(ProxyMessageKind || (ProxyMessageKind = {}));\n// A Stub Agent that forwards calls to another Agent implementation.\nexport class ProxyStubAgent {\n constructor(_frontend, _agent) {\n this._frontend = _frontend;\n this._agent = _agent;\n }\n onmessage(msg) {\n switch (msg.type) {\n case ProxyMessageKind.GetPrincipal:\n this._agent.getPrincipal().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.GetPrincipalResponse,\n response: response.toText(),\n });\n });\n break;\n case ProxyMessageKind.Query:\n this._agent.query(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.QueryResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Call:\n this._agent.call(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.CallResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.ReadState:\n this._agent.readState(...msg.args).then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.ReadStateResponse,\n response,\n });\n });\n break;\n case ProxyMessageKind.Status:\n this._agent.status().then(response => {\n this._frontend({\n id: msg.id,\n type: ProxyMessageKind.StatusResponse,\n response,\n });\n });\n break;\n default:\n throw new Error(`Invalid message received: ${JSON.stringify(msg)}`);\n }\n }\n}\n// An Agent that forwards calls to a backend. The calls are serialized\nexport class ProxyAgent {\n constructor(_backend) {\n this._backend = _backend;\n this._nextId = 0;\n this._pendingCalls = new Map();\n this.rootKey = null;\n }\n onmessage(msg) {\n const id = msg.id;\n const maybePromise = this._pendingCalls.get(id);\n if (!maybePromise) {\n throw new Error('A proxy get the same message twice...');\n }\n this._pendingCalls.delete(id);\n const [resolve, reject] = maybePromise;\n switch (msg.type) {\n case ProxyMessageKind.Error:\n return reject(msg.error);\n case ProxyMessageKind.GetPrincipalResponse:\n case ProxyMessageKind.CallResponse:\n case ProxyMessageKind.QueryResponse:\n case ProxyMessageKind.ReadStateResponse:\n case ProxyMessageKind.StatusResponse:\n return resolve(msg.response);\n default:\n throw new Error(`Invalid message being sent to ProxyAgent: ${JSON.stringify(msg)}`);\n }\n }\n async getPrincipal() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.GetPrincipal,\n }).then(principal => {\n if (typeof principal !== 'string') {\n throw new Error('Invalid principal received.');\n }\n return Principal.fromText(principal);\n });\n }\n readState(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.ReadState,\n args: [canisterId.toString(), fields],\n });\n }\n call(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Call,\n args: [canisterId.toString(), fields],\n });\n }\n status() {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Status,\n });\n }\n query(canisterId, fields) {\n return this._sendAndWait({\n id: this._nextId++,\n type: ProxyMessageKind.Query,\n args: [canisterId.toString(), fields],\n });\n }\n async _sendAndWait(msg) {\n return new Promise((resolve, reject) => {\n this._pendingCalls.set(msg.id, [resolve, reject]);\n this._backend(msg);\n });\n }\n async fetchRootKey() {\n // Hex-encoded version of the replica root key\n const rootKey = (await this.status()).root_key;\n this.rootKey = rootKey;\n return rootKey;\n }\n}\n//# sourceMappingURL=proxy.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/*\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n */\n(function(){\n \"use strict\";\n\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\n // Use a lookup table to find the index.\n var lookup = new Uint8Array(256);\n for (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n }\n\n exports.encode = function(arraybuffer) {\n var bytes = new Uint8Array(arraybuffer),\n i, len = bytes.length, base64 = \"\";\n\n for (i = 0; i < len; i+=3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if ((len % 3) === 2) {\n base64 = base64.substring(0, base64.length - 1) + \"=\";\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + \"==\";\n }\n\n return base64;\n };\n\n exports.decode = function(base64) {\n var bufferLength = base64.length * 0.75,\n len = base64.length, i, p = 0,\n encoded1, encoded2, encoded3, encoded4;\n\n if (base64[base64.length - 1] === \"=\") {\n bufferLength--;\n if (base64[base64.length - 2] === \"=\") {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i+=4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i+1)];\n encoded3 = lookup[base64.charCodeAt(i+2)];\n encoded4 = lookup[base64.charCodeAt(i+3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n})();\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import { Principal } from '@dfinity/agent';\nimport { DelegationChain } from '@dfinity/identity';\nconst DEFAULT_IDENTITY_PROVIDER_URL = 'https://auth.ic0.app/authorize';\nfunction _getDefaultLocation() {\n if (typeof window === 'undefined') {\n throw new Error('Could not find default location.');\n }\n return window.location.origin;\n}\n/**\n * Create a URL that can be used to redirect the browser to request authentication (e.g. using\n * the authentication provider). Will throw if some options are invalid.\n * @param options An option with all options for the authentication request.\n */\nexport function createAuthenticationRequestUrl(options) {\n var _a, _b, _c;\n const url = new URL((_b = (_a = options.identityProvider) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : DEFAULT_IDENTITY_PROVIDER_URL);\n url.searchParams.set('response_type', 'token');\n url.searchParams.set('login_hint', options.publicKey.toDer().toString('hex'));\n url.searchParams.set('redirect_uri', (_c = options.redirectUri) !== null && _c !== void 0 ? _c : _getDefaultLocation());\n url.searchParams.set('scope', options.scope.map(p => {\n if (typeof p === 'string') {\n return Principal.fromText(p);\n }\n else {\n return p;\n }\n }).map(p => p.toString()).join(' '));\n url.searchParams.set('state', '');\n return url;\n}\n/**\n * Returns an AccessToken from the Window object. This cannot be used in Node, instead use\n * the {@link getAccessTokenFromURL} function.\n *\n * An access token is needed to create a DelegationChain object.\n */\nexport function getAccessTokenFromWindow() {\n if (typeof window === 'undefined') {\n return null;\n }\n return getAccessTokenFromURL(new URL(window.location.href));\n}\n/**\n * Analyze a URL and try to extract an AccessToken from it.\n * @param url The URL to look into.\n */\nexport function getAccessTokenFromURL(url) {\n // Remove the `#` at the start.\n const hashParams = new URLSearchParams(new URL(url.toString()).hash.substr(1));\n return hashParams.get('access_token');\n}\n/**\n * Create a DelegationChain from an AccessToken extracted from a redirect URL.\n * @param accessToken The access token extracted from a redirect URL.\n */\nexport function createDelegationChainFromAccessToken(accessToken) {\n // Transform the HEXADECIMAL string into the JSON it represents.\n if (/[^0-9a-fA-F]/.test(accessToken) || (accessToken.length % 2)) {\n throw new Error('Invalid hexadecimal string for accessToken.');\n }\n const chainJson = [...accessToken]\n .reduce((acc, curr, i) => {\n // tslint:disable-next-line:no-bitwise\n acc[i / 2 | 0] = (acc[i / 2 | 0] || '') + curr;\n return acc;\n }, [])\n .map(x => Number.parseInt(x, 16))\n .map(x => String.fromCharCode(x))\n .join('');\n return DelegationChain.fromJSON(chainJson);\n}\n/**\n * Analyze a DelegationChain and validate that it's valid, ie. not expired and apply to the\n * scope.\n * @param chain The chain to validate.\n * @param checks Various checks to validate on the chain.\n */\nexport function isDelegationValid(chain, checks) {\n // Verify that the no delegation is expired. If any are in the chain, returns false.\n for (const { delegation } of chain.delegations) {\n // prettier-ignore\n if (+new Date(Number(delegation.expiration / BigInt(1000000))) <= +Date.now()) {\n return false;\n }\n }\n // Check the scopes.\n const scopes = [];\n const maybeScope = checks === null || checks === void 0 ? void 0 : checks.scope;\n if (maybeScope) {\n if (Array.isArray(maybeScope)) {\n scopes.push(...maybeScope.map(s => (typeof s === 'string') ? Principal.fromText(s) : s));\n }\n else {\n scopes.push((typeof maybeScope === 'string') ? Principal.fromText(maybeScope) : maybeScope);\n }\n }\n for (const s of scopes) {\n const scope = s.toText();\n for (const { delegation } of chain.delegations) {\n if (delegation.targets === undefined) {\n continue;\n }\n let none = true;\n for (const target of delegation.targets) {\n if (target.toText() === scope) {\n none = false;\n break;\n }\n }\n if (none) {\n return false;\n }\n }\n }\n return true;\n}\n//# sourceMappingURL=index.js.map","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/** @license React v16.13.1\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar has = Function.call.bind(Object.prototype.hasOwnProperty);\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import React, { memo, useRef, useEffect, useState } from 'react';\nimport lottie from 'lottie-web';\nimport PropTypes from 'prop-types';\nimport equal from 'fast-deep-equal/es6/react';\n\nconst Lottie = memo(({\n animationData,\n path,\n\n play,\n speed,\n direction,\n segments: segmentsIn,\n goTo,\n\n renderer,\n loop,\n rendererSettings: rendererSettingsIn,\n\n audioFactory,\n\n onLoad,\n onComplete,\n onLoopComplete,\n onEnterFrame,\n onSegmentStart,\n\n ...props\n}) => {\n const animElementRef = useRef();\n const animRef = useRef();\n\n const [ready, setReady] = useState(false);\n\n const [segments, setSegments] = useState(segmentsIn);\n\n // Prevent re-init\n useEffect(() => {\n if (!equal(segments, segmentsIn)) setSegments(segmentsIn);\n }, [segmentsIn, segments]);\n\n const [rendererSettings, setRendererSettings] = useState(rendererSettingsIn);\n\n // Prevent re-init\n useEffect(() => {\n if (!equal(rendererSettings, rendererSettingsIn)) setRendererSettings(rendererSettingsIn);\n }, [rendererSettingsIn, rendererSettings]);\n\n\n // In order to remove listeners before animRef gets destroyed:\n useEffect(() => () => animRef.current.removeEventListener('complete', onComplete), [onComplete]);\n useEffect(() => () => animRef.current.removeEventListener('loopComplete', onLoopComplete), [onLoopComplete]);\n useEffect(() => () => animRef.current.removeEventListener('enterFrame', onEnterFrame), [onEnterFrame]);\n useEffect(() => () => animRef.current.removeEventListener('segmentStart', onSegmentStart), [onSegmentStart]);\n\n useEffect(() => {\n // console.log('init')\n animRef.current = lottie.loadAnimation({\n animationData,\n path,\n container: animElementRef.current,\n renderer,\n loop: false,\n autoplay: false, // We want to explicitly control playback\n rendererSettings,\n audioFactory,\n });\n\n function onDomLoaded() {\n setReady(true);\n onLoad();\n }\n animRef.current.addEventListener('DOMLoaded', onDomLoaded);\n\n return () => {\n animRef.current.removeEventListener('DOMLoaded', onDomLoaded);\n setReady(false);\n animRef.current.destroy();\n animRef.current = undefined;\n };\n }, [loop, renderer, rendererSettings, animationData, path, audioFactory]);\n\n useEffect(() => {\n animRef.current.addEventListener('complete', onComplete);\n }, [onComplete]);\n\n useEffect(() => {\n animRef.current.addEventListener('loopComplete', onLoopComplete);\n }, [onLoopComplete]);\n\n useEffect(() => {\n animRef.current.addEventListener('enterFrame', onEnterFrame);\n }, [onEnterFrame]);\n\n useEffect(() => {\n animRef.current.addEventListener('segmentStart', onSegmentStart);\n }, [onSegmentStart]);\n\n useEffect(() => {\n if (!ready) return;\n animRef.current.loop = loop;\n }, [ready, loop]);\n\n const wasPlayingSegmentsRef = useRef(false);\n\n useEffect(() => {\n if (!ready) return;\n\n // Without this code, when playback restarts, it will not play in reverse:\n // https://github.com/mifi/react-lottie-player/issues/19\n function playReverse(lastFrame) {\n animRef.current.goToAndPlay(lastFrame, true);\n animRef.current.setDirection(direction);\n }\n\n if (play === true) {\n const force = true;\n if (segments) {\n animRef.current.playSegments(segments, force);\n wasPlayingSegmentsRef.current = true;\n\n // This needs to be called after playSegments or it will not play backwards\n if (direction === -1) {\n // TODO What if more than one segment\n const lastFrame = segments[1];\n playReverse(lastFrame);\n }\n } else {\n // If we called playSegments last time, the segments are stored as a state in the lottie object\n // Need to reset segments or else it will still play the old segments also when calling play()\n // wasPlayingSegmentsRef: Only reset segments if playSegments last time, because resetSegments will also reset playback position\n // https://github.com/airbnb/lottie-web/blob/master/index.d.ts\n if (wasPlayingSegmentsRef.current) animRef.current.resetSegments(force);\n wasPlayingSegmentsRef.current = false;\n\n if (direction === -1) {\n const lastFrame = animRef.current.getDuration(true);\n playReverse(lastFrame);\n } else {\n animRef.current.play();\n }\n }\n } else if (play === false) {\n animRef.current.pause();\n }\n }, [play, segments, ready]);\n\n useEffect(() => {\n if (!ready) return;\n if (Number.isNaN(speed)) return;\n animRef.current.setSpeed(speed);\n }, [speed, ready]);\n\n // This handles the case where only direction has changed (direction is not a dependency of the other effect that calls setDirection)\n useEffect(() => {\n if (!ready) return;\n animRef.current.setDirection(direction);\n }, [direction, ready]);\n\n useEffect(() => {\n if (!ready) return;\n if (goTo == null) return;\n const isFrame = true; // TODO\n if (play) animRef.current.goToAndPlay(goTo, isFrame);\n else animRef.current.goToAndStop(goTo, isFrame);\n }, [goTo, play, ready]);\n\n return (\n \n );\n});\n\n\nLottie.propTypes = {\n // You can use either animationData OR path\n animationData: PropTypes.object,\n path: PropTypes.string,\n\n play: PropTypes.bool,\n goTo: PropTypes.number,\n speed: PropTypes.number,\n direction: PropTypes.number,\n loop: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n\n segments: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.number), PropTypes.bool]),\n\n rendererSettings: PropTypes.object,\n\n renderer: PropTypes.string,\n\n audioFactory: PropTypes.func,\n\n onComplete: PropTypes.func,\n onLoopComplete: PropTypes.func,\n onEnterFrame: PropTypes.func,\n onSegmentStart: PropTypes.func,\n};\n\nLottie.defaultProps = {\n animationData: null,\n path: null,\n\n play: null,\n segments: null,\n goTo: null,\n\n speed: 1,\n direction: 1,\n loop: true,\n\n rendererSettings: {},\n renderer: 'svg',\n\n audioFactory: null,\n\n onLoad: () => {},\n onComplete: () => {},\n onLoopComplete: () => {},\n onEnterFrame: () => {},\n onSegmentStart: () => {},\n};\n\nexport default Lottie;\n","(typeof navigator !== \"undefined\") && (function(root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define(function() {\n return factory(root);\n });\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory(root);\n } else {\n root.lottie = factory(root);\n root.bodymovin = root.lottie;\n }\n}((window || {}), function(window) {\n\t/* global locationHref:writable, animationManager, subframeEnabled:writable, defaultCurveSegments:writable, roundValues,\r\nexpressionsPlugin:writable, PropertyFactory, ShapePropertyFactory, Matrix */\r\n/* exported locationHref, subframeEnabled, expressionsPlugin */\r\n\r\n'use strict';\r\n\r\n/* exported svgNS, locationHref, initialDefaultFrame */\r\n\r\nvar svgNS = 'http://www.w3.org/2000/svg';\r\n\r\nvar locationHref = '';\r\n\r\nvar initialDefaultFrame = -999999;\r\n\r\n/* global createSizedArray */\r\n/* exported subframeEnabled, expressionsPlugin, isSafari, cachedColors, bmPow, bmSqrt, bmFloor, bmMax, bmMin, ProjectInterface,\r\ndefaultCurveSegments, degToRads, roundCorner, bmRnd, styleDiv, BMEnterFrameEvent, BMCompleteEvent, BMCompleteLoopEvent,\r\nBMSegmentStartEvent, BMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, BMAnimationConfigErrorEvent, createElementID,\r\naddSaturationToRGB, addBrightnessToRGB, addHueToRGB, rgbToHex */\r\n\r\nvar subframeEnabled = true;\r\nvar expressionsPlugin;\r\nvar isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\r\nvar cachedColors = {};\r\nvar bmRnd;\r\nvar bmPow = Math.pow;\r\nvar bmSqrt = Math.sqrt;\r\nvar bmFloor = Math.floor;\r\nvar bmMax = Math.max;\r\nvar bmMin = Math.min;\r\n\r\nvar BMMath = {};\r\n(function () {\r\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\r\n var i;\r\n var len = propertyNames.length;\r\n for (i = 0; i < len; i += 1) {\r\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\r\n }\r\n}());\r\n\r\nfunction ProjectInterface() { return {}; }\r\n\r\nBMMath.random = Math.random;\r\nBMMath.abs = function (val) {\r\n var tOfVal = typeof val;\r\n if (tOfVal === 'object' && val.length) {\r\n var absArr = createSizedArray(val.length);\r\n var i;\r\n var len = val.length;\r\n for (i = 0; i < len; i += 1) {\r\n absArr[i] = Math.abs(val[i]);\r\n }\r\n return absArr;\r\n }\r\n return Math.abs(val);\r\n};\r\nvar defaultCurveSegments = 150;\r\nvar degToRads = Math.PI / 180;\r\nvar roundCorner = 0.5519;\r\n\r\nfunction roundValues(flag) {\r\n if (flag) {\r\n bmRnd = Math.round;\r\n } else {\r\n bmRnd = function (val) {\r\n return val;\r\n };\r\n }\r\n}\r\nroundValues(false);\r\n\r\nfunction styleDiv(element) {\r\n element.style.position = 'absolute';\r\n element.style.top = 0;\r\n element.style.left = 0;\r\n element.style.display = 'block';\r\n element.style.transformOrigin = '0 0';\r\n element.style.webkitTransformOrigin = '0 0';\r\n element.style.backfaceVisibility = 'visible';\r\n element.style.webkitBackfaceVisibility = 'visible';\r\n element.style.transformStyle = 'preserve-3d';\r\n element.style.webkitTransformStyle = 'preserve-3d';\r\n element.style.mozTransformStyle = 'preserve-3d';\r\n}\r\n\r\nfunction BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\r\n this.type = type;\r\n this.currentTime = currentTime;\r\n this.totalTime = totalTime;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteEvent(type, frameMultiplier) {\r\n this.type = type;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\r\n this.type = type;\r\n this.currentLoop = currentLoop;\r\n this.totalLoops = totalLoops;\r\n this.direction = frameMultiplier < 0 ? -1 : 1;\r\n}\r\n\r\nfunction BMSegmentStartEvent(type, firstFrame, totalFrames) {\r\n this.type = type;\r\n this.firstFrame = firstFrame;\r\n this.totalFrames = totalFrames;\r\n}\r\n\r\nfunction BMDestroyEvent(type, target) {\r\n this.type = type;\r\n this.target = target;\r\n}\r\n\r\nfunction BMRenderFrameErrorEvent(nativeError, currentTime) {\r\n this.type = 'renderFrameError';\r\n this.nativeError = nativeError;\r\n this.currentTime = currentTime;\r\n}\r\n\r\nfunction BMConfigErrorEvent(nativeError) {\r\n this.type = 'configError';\r\n this.nativeError = nativeError;\r\n}\r\n\r\nfunction BMAnimationConfigErrorEvent(type, nativeError) {\r\n this.type = type;\r\n this.nativeError = nativeError;\r\n}\r\n\r\nvar createElementID = (function () {\r\n var _count = 0;\r\n return function createID() {\r\n _count += 1;\r\n return '__lottie_element_' + _count;\r\n };\r\n}());\r\n\r\nfunction HSVtoRGB(h, s, v) {\r\n var r;\r\n var g;\r\n var b;\r\n var i;\r\n var f;\r\n var p;\r\n var q;\r\n var t;\r\n i = Math.floor(h * 6);\r\n f = h * 6 - i;\r\n p = v * (1 - s);\r\n q = v * (1 - f * s);\r\n t = v * (1 - (1 - f) * s);\r\n switch (i % 6) {\r\n case 0: r = v; g = t; b = p; break;\r\n case 1: r = q; g = v; b = p; break;\r\n case 2: r = p; g = v; b = t; break;\r\n case 3: r = p; g = q; b = v; break;\r\n case 4: r = t; g = p; b = v; break;\r\n case 5: r = v; g = p; b = q; break;\r\n default: break;\r\n }\r\n return [r,\r\n g,\r\n b];\r\n}\r\n\r\nfunction RGBtoHSV(r, g, b) {\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var d = max - min;\r\n var h;\r\n var s = (max === 0 ? 0 : d / max);\r\n var v = max / 255;\r\n\r\n switch (max) {\r\n case min: h = 0; break;\r\n case r: h = (g - b) + d * (g < b ? 6 : 0); h /= 6 * d; break;\r\n case g: h = (b - r) + d * 2; h /= 6 * d; break;\r\n case b: h = (r - g) + d * 4; h /= 6 * d; break;\r\n default: break;\r\n }\r\n\r\n return [\r\n h,\r\n s,\r\n v,\r\n ];\r\n}\r\n\r\nfunction addSaturationToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[1] += offset;\r\n if (hsv[1] > 1) {\r\n hsv[1] = 1;\r\n } else if (hsv[1] <= 0) {\r\n hsv[1] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addBrightnessToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[2] += offset;\r\n if (hsv[2] > 1) {\r\n hsv[2] = 1;\r\n } else if (hsv[2] < 0) {\r\n hsv[2] = 0;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nfunction addHueToRGB(color, offset) {\r\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\r\n hsv[0] += offset / 360;\r\n if (hsv[0] > 1) {\r\n hsv[0] -= 1;\r\n } else if (hsv[0] < 0) {\r\n hsv[0] += 1;\r\n }\r\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\r\n}\r\n\r\nvar rgbToHex = (function () {\r\n var colorMap = [];\r\n var i;\r\n var hex;\r\n for (i = 0; i < 256; i += 1) {\r\n hex = i.toString(16);\r\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n return function (r, g, b) {\r\n if (r < 0) {\r\n r = 0;\r\n }\r\n if (g < 0) {\r\n g = 0;\r\n }\r\n if (b < 0) {\r\n b = 0;\r\n }\r\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\r\n };\r\n}());\r\n\r\nfunction BaseEvent() {}\r\nBaseEvent.prototype = {\r\n triggerEvent: function (eventName, args) {\r\n if (this._cbs[eventName]) {\r\n var len = this._cbs[eventName].length;\r\n for (var i = 0; i < len; i += 1) {\r\n this._cbs[eventName][i](args);\r\n }\r\n }\r\n },\r\n addEventListener: function (eventName, callback) {\r\n if (!this._cbs[eventName]) {\r\n this._cbs[eventName] = [];\r\n }\r\n this._cbs[eventName].push(callback);\r\n\r\n return function () {\r\n this.removeEventListener(eventName, callback);\r\n }.bind(this);\r\n },\r\n removeEventListener: function (eventName, callback) {\r\n if (!callback) {\r\n this._cbs[eventName] = null;\r\n } else if (this._cbs[eventName]) {\r\n var i = 0;\r\n var len = this._cbs[eventName].length;\r\n while (i < len) {\r\n if (this._cbs[eventName][i] === callback) {\r\n this._cbs[eventName].splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n }\r\n i += 1;\r\n }\r\n if (!this._cbs[eventName].length) {\r\n this._cbs[eventName] = null;\r\n }\r\n }\r\n },\r\n};\r\n\r\n/* exported createTypedArray, createSizedArray */\r\n\r\nvar createTypedArray = (function () {\r\n function createRegularArray(type, len) {\r\n var i = 0;\r\n var arr = [];\r\n var value;\r\n switch (type) {\r\n case 'int16':\r\n case 'uint8c':\r\n value = 1;\r\n break;\r\n default:\r\n value = 1.1;\r\n break;\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n arr.push(value);\r\n }\r\n return arr;\r\n }\r\n function createTypedArrayFactory(type, len) {\r\n if (type === 'float32') {\r\n return new Float32Array(len);\r\n } if (type === 'int16') {\r\n return new Int16Array(len);\r\n } if (type === 'uint8c') {\r\n return new Uint8ClampedArray(len);\r\n }\r\n return createRegularArray(type, len);\r\n }\r\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\r\n return createTypedArrayFactory;\r\n }\r\n return createRegularArray;\r\n}());\r\n\r\nfunction createSizedArray(len) {\r\n return Array.apply(null, { length: len });\r\n}\r\n\r\n/* global svgNS */\r\n/* exported createNS */\r\n\r\nfunction createNS(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElementNS(svgNS, type);\r\n}\r\n\r\n/* exported createTag */\r\n\r\nfunction createTag(type) {\r\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\r\n return document.createElement(type);\r\n}\r\n\r\nfunction DynamicPropertyContainer() {}\r\nDynamicPropertyContainer.prototype = {\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n this.container.addDynamicProperty(this);\r\n this._isAnimated = true;\r\n }\r\n },\r\n iterateDynamicProperties: function () {\r\n this._mdf = false;\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n },\r\n initDynamicPropertyContainer: function (container) {\r\n this.container = container;\r\n this.dynamicProperties = [];\r\n this._mdf = false;\r\n this._isAnimated = false;\r\n },\r\n};\r\n\r\n/* exported getBlendMode */\r\n\r\nvar getBlendMode = (function () {\r\n var blendModeEnums = {\r\n 0: 'source-over',\r\n 1: 'multiply',\r\n 2: 'screen',\r\n 3: 'overlay',\r\n 4: 'darken',\r\n 5: 'lighten',\r\n 6: 'color-dodge',\r\n 7: 'color-burn',\r\n 8: 'hard-light',\r\n 9: 'soft-light',\r\n 10: 'difference',\r\n 11: 'exclusion',\r\n 12: 'hue',\r\n 13: 'saturation',\r\n 14: 'color',\r\n 15: 'luminosity',\r\n };\r\n\r\n return function (mode) {\r\n return blendModeEnums[mode] || '';\r\n };\r\n}());\r\n\r\n/* global createTypedArray */\r\n\r\n/*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\r\n\r\n/**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\r\n\r\nvar Matrix = (function () {\r\n var _cos = Math.cos;\r\n var _sin = Math.sin;\r\n var _tan = Math.tan;\r\n var _rnd = Math.round;\r\n\r\n function reset() {\r\n this.props[0] = 1;\r\n this.props[1] = 0;\r\n this.props[2] = 0;\r\n this.props[3] = 0;\r\n this.props[4] = 0;\r\n this.props[5] = 1;\r\n this.props[6] = 0;\r\n this.props[7] = 0;\r\n this.props[8] = 0;\r\n this.props[9] = 0;\r\n this.props[10] = 1;\r\n this.props[11] = 0;\r\n this.props[12] = 0;\r\n this.props[13] = 0;\r\n this.props[14] = 0;\r\n this.props[15] = 1;\r\n return this;\r\n }\r\n\r\n function rotate(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateX(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateY(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function rotateZ(angle) {\r\n if (angle === 0) {\r\n return this;\r\n }\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function shear(sx, sy) {\r\n return this._t(1, sy, sx, 1, 0, 0);\r\n }\r\n\r\n function skew(ax, ay) {\r\n return this.shear(_tan(ax), _tan(ay));\r\n }\r\n\r\n function skewFromAxis(ax, angle) {\r\n var mCos = _cos(angle);\r\n var mSin = _sin(angle);\r\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)\r\n ._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\r\n // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\r\n }\r\n\r\n function scale(sx, sy, sz) {\r\n if (!sz && sz !== 0) {\r\n sz = 1;\r\n }\r\n if (sx === 1 && sy === 1 && sz === 1) {\r\n return this;\r\n }\r\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\r\n }\r\n\r\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\r\n this.props[0] = a;\r\n this.props[1] = b;\r\n this.props[2] = c;\r\n this.props[3] = d;\r\n this.props[4] = e;\r\n this.props[5] = f;\r\n this.props[6] = g;\r\n this.props[7] = h;\r\n this.props[8] = i;\r\n this.props[9] = j;\r\n this.props[10] = k;\r\n this.props[11] = l;\r\n this.props[12] = m;\r\n this.props[13] = n;\r\n this.props[14] = o;\r\n this.props[15] = p;\r\n return this;\r\n }\r\n\r\n function translate(tx, ty, tz) {\r\n tz = tz || 0;\r\n if (tx !== 0 || ty !== 0 || tz !== 0) {\r\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\r\n }\r\n return this;\r\n }\r\n\r\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\r\n var _p = this.props;\r\n\r\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\r\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\r\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\r\n _p[12] = _p[12] * a2 + _p[15] * m2;\r\n _p[13] = _p[13] * f2 + _p[15] * n2;\r\n _p[14] = _p[14] * k2 + _p[15] * o2;\r\n _p[15] *= p2;\r\n // }\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n var a1 = _p[0];\r\n var b1 = _p[1];\r\n var c1 = _p[2];\r\n var d1 = _p[3];\r\n var e1 = _p[4];\r\n var f1 = _p[5];\r\n var g1 = _p[6];\r\n var h1 = _p[7];\r\n var i1 = _p[8];\r\n var j1 = _p[9];\r\n var k1 = _p[10];\r\n var l1 = _p[11];\r\n var m1 = _p[12];\r\n var n1 = _p[13];\r\n var o1 = _p[14];\r\n var p1 = _p[15];\r\n\r\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\r\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\r\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\r\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\r\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\r\n\r\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\r\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\r\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\r\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\r\n\r\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\r\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\r\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\r\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\r\n\r\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\r\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\r\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\r\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\r\n\r\n this._identityCalculated = false;\r\n return this;\r\n }\r\n\r\n function isIdentity() {\r\n if (!this._identityCalculated) {\r\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\r\n this._identityCalculated = true;\r\n }\r\n return this._identity;\r\n }\r\n\r\n function equals(matr) {\r\n var i = 0;\r\n while (i < 16) {\r\n if (matr.props[i] !== this.props[i]) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n }\r\n\r\n function clone(matr) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n matr.props[i] = this.props[i];\r\n }\r\n return matr;\r\n }\r\n\r\n function cloneFromProps(props) {\r\n var i;\r\n for (i = 0; i < 16; i += 1) {\r\n this.props[i] = props[i];\r\n }\r\n }\r\n\r\n function applyToPoint(x, y, z) {\r\n return {\r\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n };\r\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\r\n }\r\n function applyToX(x, y, z) {\r\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\r\n }\r\n function applyToY(x, y, z) {\r\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\r\n }\r\n function applyToZ(x, y, z) {\r\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\r\n }\r\n\r\n function getInverseMatrix() {\r\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\r\n var a = this.props[5] / determinant;\r\n var b = -this.props[1] / determinant;\r\n var c = -this.props[4] / determinant;\r\n var d = this.props[0] / determinant;\r\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\r\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\r\n var inverseMatrix = new Matrix();\r\n inverseMatrix.props[0] = a;\r\n inverseMatrix.props[1] = b;\r\n inverseMatrix.props[4] = c;\r\n inverseMatrix.props[5] = d;\r\n inverseMatrix.props[12] = e;\r\n inverseMatrix.props[13] = f;\r\n return inverseMatrix;\r\n }\r\n\r\n function inversePoint(pt) {\r\n var inverseMatrix = this.getInverseMatrix();\r\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\r\n }\r\n\r\n function inversePoints(pts) {\r\n var i;\r\n var len = pts.length;\r\n var retPts = [];\r\n for (i = 0; i < len; i += 1) {\r\n retPts[i] = inversePoint(pts[i]);\r\n }\r\n return retPts;\r\n }\r\n\r\n function applyToTriplePoints(pt1, pt2, pt3) {\r\n var arr = createTypedArray('float32', 6);\r\n if (this.isIdentity()) {\r\n arr[0] = pt1[0];\r\n arr[1] = pt1[1];\r\n arr[2] = pt2[0];\r\n arr[3] = pt2[1];\r\n arr[4] = pt3[0];\r\n arr[5] = pt3[1];\r\n } else {\r\n var p0 = this.props[0];\r\n var p1 = this.props[1];\r\n var p4 = this.props[4];\r\n var p5 = this.props[5];\r\n var p12 = this.props[12];\r\n var p13 = this.props[13];\r\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\r\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\r\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\r\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\r\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\r\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointArray(x, y, z) {\r\n var arr;\r\n if (this.isIdentity()) {\r\n arr = [x, y, z];\r\n } else {\r\n arr = [\r\n x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\r\n x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\r\n x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14],\r\n ];\r\n }\r\n return arr;\r\n }\r\n\r\n function applyToPointStringified(x, y) {\r\n if (this.isIdentity()) {\r\n return x + ',' + y;\r\n }\r\n var _p = this.props;\r\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\r\n }\r\n\r\n function toCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var i = 0;\r\n var props = this.props;\r\n var cssValue = 'matrix3d(';\r\n var v = 10000;\r\n while (i < 16) {\r\n cssValue += _rnd(props[i] * v) / v;\r\n cssValue += i === 15 ? ')' : ',';\r\n i += 1;\r\n }\r\n return cssValue;\r\n }\r\n\r\n function roundMatrixProperty(val) {\r\n var v = 10000;\r\n if ((val < 0.000001 && val > 0) || (val > -0.000001 && val < 0)) {\r\n return _rnd(val * v) / v;\r\n }\r\n return val;\r\n }\r\n\r\n function to2dCSS() {\r\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\r\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\r\n var props = this.props;\r\n var _a = roundMatrixProperty(props[0]);\r\n var _b = roundMatrixProperty(props[1]);\r\n var _c = roundMatrixProperty(props[4]);\r\n var _d = roundMatrixProperty(props[5]);\r\n var _e = roundMatrixProperty(props[12]);\r\n var _f = roundMatrixProperty(props[13]);\r\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\r\n }\r\n\r\n return function () {\r\n this.reset = reset;\r\n this.rotate = rotate;\r\n this.rotateX = rotateX;\r\n this.rotateY = rotateY;\r\n this.rotateZ = rotateZ;\r\n this.skew = skew;\r\n this.skewFromAxis = skewFromAxis;\r\n this.shear = shear;\r\n this.scale = scale;\r\n this.setTransform = setTransform;\r\n this.translate = translate;\r\n this.transform = transform;\r\n this.applyToPoint = applyToPoint;\r\n this.applyToX = applyToX;\r\n this.applyToY = applyToY;\r\n this.applyToZ = applyToZ;\r\n this.applyToPointArray = applyToPointArray;\r\n this.applyToTriplePoints = applyToTriplePoints;\r\n this.applyToPointStringified = applyToPointStringified;\r\n this.toCSS = toCSS;\r\n this.to2dCSS = to2dCSS;\r\n this.clone = clone;\r\n this.cloneFromProps = cloneFromProps;\r\n this.equals = equals;\r\n this.inversePoints = inversePoints;\r\n this.inversePoint = inversePoint;\r\n this.getInverseMatrix = getInverseMatrix;\r\n this._t = this.transform;\r\n this.isIdentity = isIdentity;\r\n this._identity = true;\r\n this._identityCalculated = false;\r\n\r\n this.props = createTypedArray('float32', 16);\r\n this.reset();\r\n };\r\n}());\r\n\r\n/* eslint-disable */\r\n/*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\r\n\r\n(function (pool, math) {\r\n//\r\n// The following constants are related to IEEE 754 limits.\r\n//\r\n var global = this,\r\n width = 256, // each RC4 output is 0 <= x < 256\r\n chunks = 6, // at least six RC4 outputs for each double\r\n digits = 52, // there are 52 significant digits in a double\r\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\r\n startdenom = math.pow(width, chunks),\r\n significance = math.pow(2, digits),\r\n overflow = significance * 2,\r\n mask = width - 1,\r\n nodecrypto; // node.js crypto module, initialized at the bottom.\r\n\r\n//\r\n// seedrandom()\r\n// This is the seedrandom function described above.\r\n//\r\n function seedrandom(seed, options, callback) {\r\n var key = [];\r\n options = (options === true) ? { entropy: true } : (options || {});\r\n\r\n // Flatten the seed string or build one from local entropy if needed.\r\n var shortseed = mixkey(flatten(\r\n options.entropy ? [seed, tostring(pool)] :\r\n (seed === null) ? autoseed() : seed, 3), key);\r\n\r\n // Use the seed to initialize an ARC4 generator.\r\n var arc4 = new ARC4(key);\r\n\r\n // This function returns a random double in [0, 1) that contains\r\n // randomness in every bit of the mantissa of the IEEE 754 value.\r\n var prng = function() {\r\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\r\n d = startdenom, // and denominator d = 2 ^ 48.\r\n x = 0; // and no 'extra last byte'.\r\n while (n < significance) { // Fill up all significant digits by\r\n n = (n + x) * width; // shifting numerator and\r\n d *= width; // denominator and generating a\r\n x = arc4.g(1); // new least-significant-byte.\r\n }\r\n while (n >= overflow) { // To avoid rounding up, before adding\r\n n /= 2; // last byte, shift everything\r\n d /= 2; // right using integer math until\r\n x >>>= 1; // we have exactly the desired bits.\r\n }\r\n return (n + x) / d; // Form the number within [0, 1).\r\n };\r\n\r\n prng.int32 = function() { return arc4.g(4) | 0; };\r\n prng.quick = function() { return arc4.g(4) / 0x100000000; };\r\n prng.double = prng;\r\n\r\n // Mix the randomness into accumulated entropy.\r\n mixkey(tostring(arc4.S), pool);\r\n\r\n // Calling convention: what to return as a function of prng, seed, is_math.\r\n return (options.pass || callback ||\r\n function(prng, seed, is_math_call, state) {\r\n if (state) {\r\n // Load the arc4 state from the given state if it has an S array.\r\n if (state.S) { copy(state, arc4); }\r\n // Only provide the .state method if requested via options.state.\r\n prng.state = function() { return copy(arc4, {}); };\r\n }\r\n\r\n // If called as a method of Math (Math.seedrandom()), mutate\r\n // Math.random because that is how seedrandom.js has worked since v1.0.\r\n if (is_math_call) { math[rngname] = prng; return seed; }\r\n\r\n // Otherwise, it is a newer calling convention, so return the\r\n // prng directly.\r\n else return prng;\r\n })(\r\n prng,\r\n shortseed,\r\n 'global' in options ? options.global : (this == math),\r\n options.state);\r\n }\r\n math['seed' + rngname] = seedrandom;\r\n\r\n//\r\n// ARC4\r\n//\r\n// An ARC4 implementation. The constructor takes a key in the form of\r\n// an array of at most (width) integers that should be 0 <= x < (width).\r\n//\r\n// The g(count) method returns a pseudorandom integer that concatenates\r\n// the next (count) outputs from ARC4. Its return value is a number x\r\n// that is in the range 0 <= x < (width ^ count).\r\n//\r\n function ARC4(key) {\r\n var t, keylen = key.length,\r\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\r\n\r\n // The empty key [] is treated as [0].\r\n if (!keylen) { key = [keylen++]; }\r\n\r\n // Set up S using the standard key scheduling algorithm.\r\n while (i < width) {\r\n s[i] = i++;\r\n }\r\n for (i = 0; i < width; i++) {\r\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\r\n s[j] = t;\r\n }\r\n\r\n // The \"g\" method returns the next (count) outputs as one number.\r\n me.g = function(count) {\r\n // Using instance members instead of closure state nearly doubles speed.\r\n var t, r = 0,\r\n i = me.i, j = me.j, s = me.S;\r\n while (count--) {\r\n t = s[i = mask & (i + 1)];\r\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\r\n }\r\n me.i = i; me.j = j;\r\n return r;\r\n // For robust unpredictability, the function call below automatically\r\n // discards an initial batch of values. This is called RC4-drop[256].\r\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\r\n };\r\n }\r\n\r\n//\r\n// copy()\r\n// Copies internal state of ARC4 to or from a plain object.\r\n//\r\n function copy(f, t) {\r\n t.i = f.i;\r\n t.j = f.j;\r\n t.S = f.S.slice();\r\n return t;\r\n }\r\n\r\n//\r\n// flatten()\r\n// Converts an object tree to nested arrays of strings.\r\n//\r\n function flatten(obj, depth) {\r\n var result = [], typ = (typeof obj), prop;\r\n if (depth && typ == 'object') {\r\n for (prop in obj) {\r\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\r\n }\r\n }\r\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\r\n }\r\n\r\n//\r\n// mixkey()\r\n// Mixes a string seed into a key that is an array of integers, and\r\n// returns a shortened string seed that is equivalent to the result key.\r\n//\r\n function mixkey(seed, key) {\r\n var stringseed = seed + '', smear, j = 0;\r\n while (j < stringseed.length) {\r\n key[mask & j] =\r\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\r\n }\r\n return tostring(key);\r\n }\r\n\r\n//\r\n// autoseed()\r\n// Returns an object for autoseeding, using window.crypto and Node crypto\r\n// module if available.\r\n//\r\n function autoseed() {\r\n try {\r\n if (nodecrypto) { return tostring(nodecrypto.randomBytes(width)); }\r\n var out = new Uint8Array(width);\r\n (global.crypto || global.msCrypto).getRandomValues(out);\r\n return tostring(out);\r\n } catch (e) {\r\n var browser = global.navigator,\r\n plugins = browser && browser.plugins;\r\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\r\n }\r\n }\r\n\r\n//\r\n// tostring()\r\n// Converts an array of charcodes to a string\r\n//\r\n function tostring(a) {\r\n return String.fromCharCode.apply(0, a);\r\n }\r\n\r\n//\r\n// When seedrandom.js is loaded, we immediately mix a few bits\r\n// from the built-in RNG into the entropy pool. Because we do\r\n// not want to interfere with deterministic PRNG state later,\r\n// seedrandom will not call math.random on its own again after\r\n// initialization.\r\n//\r\n mixkey(math.random(), pool);\r\n\r\n//\r\n// Nodejs and AMD support: export the implementation as a module using\r\n// either convention.\r\n//\r\n\r\n// End anonymous scope, and pass initial values.\r\n})(\r\n [], // pool: entropy pool starts empty\r\n BMMath // math: package containing random, pow, and seedrandom\r\n);\r\n/* eslint-disable */\r\nvar BezierFactory = (function () {\r\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\r\n\r\n var ob = {};\r\n ob.getBezierEasing = getBezierEasing;\r\n var beziers = {};\r\n\r\n function getBezierEasing(a, b, c, d, nm) {\r\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\r\n if (beziers[str]) {\r\n return beziers[str];\r\n }\r\n var bezEasing = new BezierEasing([a, b, c, d]);\r\n beziers[str] = bezEasing;\r\n return bezEasing;\r\n }\r\n\r\n // These values are established by empiricism with tests (tradeoff: performance VS precision)\r\n var NEWTON_ITERATIONS = 4;\r\n var NEWTON_MIN_SLOPE = 0.001;\r\n var SUBDIVISION_PRECISION = 0.0000001;\r\n var SUBDIVISION_MAX_ITERATIONS = 10;\r\n\r\n var kSplineTableSize = 11;\r\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\r\n\r\n var float32ArraySupported = typeof Float32Array === 'function';\r\n\r\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }\r\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }\r\n function C(aA1) { return 3.0 * aA1; }\r\n\r\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\r\n function calcBezier(aT, aA1, aA2) {\r\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\r\n }\r\n\r\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\r\n function getSlope(aT, aA1, aA2) {\r\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\r\n }\r\n\r\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\r\n var currentX,\r\n currentT,\r\n i = 0;\r\n do {\r\n currentT = aA + (aB - aA) / 2.0;\r\n currentX = calcBezier(currentT, mX1, mX2) - aX;\r\n if (currentX > 0.0) {\r\n aB = currentT;\r\n } else {\r\n aA = currentT;\r\n }\r\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\r\n return currentT;\r\n }\r\n\r\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\r\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\r\n var currentSlope = getSlope(aGuessT, mX1, mX2);\r\n if (currentSlope === 0.0) return aGuessT;\r\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\r\n aGuessT -= currentX / currentSlope;\r\n }\r\n return aGuessT;\r\n }\r\n\r\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\r\n function BezierEasing(points) {\r\n this._p = points;\r\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\r\n this._precomputed = false;\r\n\r\n this.get = this.get.bind(this);\r\n }\r\n\r\n BezierEasing.prototype = {\r\n\r\n get: function (x) {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n if (!this._precomputed) this._precompute();\r\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\r\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\r\n if (x === 0) return 0;\r\n if (x === 1) return 1;\r\n return calcBezier(this._getTForX(x), mY1, mY2);\r\n },\r\n\r\n // Private part\r\n\r\n _precompute: function () {\r\n var mX1 = this._p[0],\r\n mY1 = this._p[1],\r\n mX2 = this._p[2],\r\n mY2 = this._p[3];\r\n this._precomputed = true;\r\n if (mX1 !== mY1 || mX2 !== mY2) { this._calcSampleValues(); }\r\n },\r\n\r\n _calcSampleValues: function () {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2];\r\n for (var i = 0; i < kSplineTableSize; ++i) {\r\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\r\n }\r\n },\r\n\r\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\r\n _getTForX: function (aX) {\r\n var mX1 = this._p[0],\r\n mX2 = this._p[2],\r\n mSampleValues = this._mSampleValues;\r\n\r\n var intervalStart = 0.0;\r\n var currentSample = 1;\r\n var lastSample = kSplineTableSize - 1;\r\n\r\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\r\n intervalStart += kSampleStepSize;\r\n }\r\n --currentSample;\r\n\r\n // Interpolate to provide an initial guess for t\r\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\r\n var guessForT = intervalStart + dist * kSampleStepSize;\r\n\r\n var initialSlope = getSlope(guessForT, mX1, mX2);\r\n if (initialSlope >= NEWTON_MIN_SLOPE) {\r\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\r\n } if (initialSlope === 0.0) {\r\n return guessForT;\r\n }\r\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\r\n },\r\n };\r\n\r\n return ob;\r\n}());\r\n\r\n(function () {\r\n var lastTime = 0;\r\n var vendors = ['ms', 'moz', 'webkit', 'o'];\r\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { // eslint-disable-line no-plusplus\r\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\r\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\r\n }\r\n if (!window.requestAnimationFrame) {\r\n window.requestAnimationFrame = function (callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = setTimeout(function () {\r\n callback(currTime + timeToCall);\r\n },\r\n timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n };\r\n }\r\n if (!window.cancelAnimationFrame) {\r\n window.cancelAnimationFrame = function (id) {\r\n clearTimeout(id);\r\n };\r\n }\r\n}());\r\n\r\n/* exported extendPrototype, getDescriptor, createProxyFunction */\r\n\r\nfunction extendPrototype(sources, destination) {\r\n var i;\r\n var len = sources.length;\r\n var sourcePrototype;\r\n for (i = 0; i < len; i += 1) {\r\n sourcePrototype = sources[i].prototype;\r\n for (var attr in sourcePrototype) {\r\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\r\n }\r\n }\r\n}\r\n\r\nfunction getDescriptor(object, prop) {\r\n return Object.getOwnPropertyDescriptor(object, prop);\r\n}\r\n\r\nfunction createProxyFunction(prototype) {\r\n function ProxyFunction() {}\r\n ProxyFunction.prototype = prototype;\r\n return ProxyFunction;\r\n}\r\n\r\n/* global segmentsLengthPool, defaultCurveSegments, createSizedArray, bmPow, bmSqrt, bmFloor, createTypedArray, bezierLengthPool */\r\n/* exported bez */\r\n\r\nfunction bezFunction() {\r\n var math = Math;\r\n\r\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\r\n var det1 = (x1 * y2) + (y1 * x3) + (x2 * y3) - (x3 * y2) - (y3 * x1) - (x2 * y1);\r\n return det1 > -0.001 && det1 < 0.001;\r\n }\r\n\r\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\r\n if (z1 === 0 && z2 === 0 && z3 === 0) {\r\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\r\n }\r\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\r\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\r\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\r\n var diffDist;\r\n if (dist1 > dist2) {\r\n if (dist1 > dist3) {\r\n diffDist = dist1 - dist2 - dist3;\r\n } else {\r\n diffDist = dist3 - dist2 - dist1;\r\n }\r\n } else if (dist3 > dist2) {\r\n diffDist = dist3 - dist2 - dist1;\r\n } else {\r\n diffDist = dist2 - dist1 - dist3;\r\n }\r\n return diffDist > -0.0001 && diffDist < 0.0001;\r\n }\r\n\r\n var getBezierLength = (function () {\r\n return function (pt1, pt2, pt3, pt4) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point = [];\r\n var lastPoint = [];\r\n var lengthData = bezierLengthPool.newElement();\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint[i] !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n lastPoint[i] = point[i];\r\n }\r\n if (ptDistance) {\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n }\r\n lengthData.percents[k] = perc;\r\n lengthData.lengths[k] = addedLength;\r\n }\r\n lengthData.addedLength = addedLength;\r\n return lengthData;\r\n };\r\n }());\r\n\r\n function getSegmentsLength(shapeData) {\r\n var segmentsLength = segmentsLengthPool.newElement();\r\n var closed = shapeData.c;\r\n var pathV = shapeData.v;\r\n var pathO = shapeData.o;\r\n var pathI = shapeData.i;\r\n var i;\r\n var len = shapeData._length;\r\n var lengths = segmentsLength.lengths;\r\n var totalLength = 0;\r\n for (i = 0; i < len - 1; i += 1) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n if (closed && len) {\r\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\r\n totalLength += lengths[i].addedLength;\r\n }\r\n segmentsLength.totalLength = totalLength;\r\n return segmentsLength;\r\n }\r\n\r\n function BezierData(length) {\r\n this.segmentLength = 0;\r\n this.points = new Array(length);\r\n }\r\n\r\n function PointData(partial, point) {\r\n this.partialLength = partial;\r\n this.point = point;\r\n }\r\n\r\n var buildBezierData = (function () {\r\n var storedData = {};\r\n\r\n return function (pt1, pt2, pt3, pt4) {\r\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\r\n if (!storedData[bezierName]) {\r\n var curveSegments = defaultCurveSegments;\r\n var k;\r\n var i;\r\n var len;\r\n var ptCoord;\r\n var perc;\r\n var addedLength = 0;\r\n var ptDistance;\r\n var point;\r\n var lastPoint = null;\r\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\r\n curveSegments = 2;\r\n }\r\n var bezierData = new BezierData(curveSegments);\r\n len = pt3.length;\r\n for (k = 0; k < curveSegments; k += 1) {\r\n point = createSizedArray(len);\r\n perc = k / (curveSegments - 1);\r\n ptDistance = 0;\r\n for (i = 0; i < len; i += 1) {\r\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\r\n point[i] = ptCoord;\r\n if (lastPoint !== null) {\r\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\r\n }\r\n }\r\n ptDistance = bmSqrt(ptDistance);\r\n addedLength += ptDistance;\r\n bezierData.points[k] = new PointData(ptDistance, point);\r\n lastPoint = point;\r\n }\r\n bezierData.segmentLength = addedLength;\r\n storedData[bezierName] = bezierData;\r\n }\r\n return storedData[bezierName];\r\n };\r\n }());\r\n\r\n function getDistancePerc(perc, bezierData) {\r\n var percents = bezierData.percents;\r\n var lengths = bezierData.lengths;\r\n var len = percents.length;\r\n var initPos = bmFloor((len - 1) * perc);\r\n var lengthPos = perc * bezierData.addedLength;\r\n var lPerc = 0;\r\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\r\n return percents[initPos];\r\n }\r\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\r\n var flag = true;\r\n while (flag) {\r\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\r\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\r\n flag = false;\r\n } else {\r\n initPos += dir;\r\n }\r\n if (initPos < 0 || initPos >= len - 1) {\r\n // FIX for TypedArrays that don't store floating point values with enough accuracy\r\n if (initPos === len - 1) {\r\n return percents[initPos];\r\n }\r\n flag = false;\r\n }\r\n }\r\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\r\n }\r\n\r\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\r\n var t1 = getDistancePerc(percent, bezierData);\r\n var u1 = 1 - t1;\r\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\r\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\r\n return [ptX, ptY];\r\n }\r\n\r\n var bezierSegmentPoints = createTypedArray('float32', 8);\r\n\r\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\r\n if (startPerc < 0) {\r\n startPerc = 0;\r\n } else if (startPerc > 1) {\r\n startPerc = 1;\r\n }\r\n var t0 = getDistancePerc(startPerc, bezierData);\r\n endPerc = endPerc > 1 ? 1 : endPerc;\r\n var t1 = getDistancePerc(endPerc, bezierData);\r\n var i;\r\n var len = pt1.length;\r\n var u0 = 1 - t0;\r\n var u1 = 1 - t1;\r\n var u0u0u0 = u0 * u0 * u0;\r\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\r\n var t0t0t0 = t0 * t0 * t0;\r\n //\r\n var u0u0u1 = u0 * u0 * u1;\r\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\r\n var t0t0t1 = t0 * t0 * t1;\r\n //\r\n var u0u1u1 = u0 * u1 * u1;\r\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\r\n var t0t1t1 = t0 * t1 * t1;\r\n //\r\n var u1u1u1 = u1 * u1 * u1;\r\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\r\n var t1t1t1 = t1 * t1 * t1;\r\n for (i = 0; i < len; i += 1) {\r\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\r\n }\r\n\r\n return bezierSegmentPoints;\r\n }\r\n\r\n return {\r\n getSegmentsLength: getSegmentsLength,\r\n getNewSegment: getNewSegment,\r\n getPointInSegment: getPointInSegment,\r\n buildBezierData: buildBezierData,\r\n pointOnLine2D: pointOnLine2D,\r\n pointOnLine3D: pointOnLine3D,\r\n };\r\n}\r\n\r\nvar bez = bezFunction();\r\n\r\n/* exported dataManager */\r\n\r\nfunction dataFunctionManager() {\r\n // var tCanvasHelper = createTag('canvas').getContext('2d');\r\n\r\n function completeLayers(layers, comps, fontManager) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (('ks' in layerData) && !layerData.completed) {\r\n layerData.completed = true;\r\n if (layerData.tt) {\r\n layers[i - 1].td = layerData.tt;\r\n }\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 0) {\r\n layerData.layers = findCompLayers(layerData.refId, comps);\r\n completeLayers(layerData.layers, comps, fontManager);\r\n } else if (layerData.ty === 4) {\r\n completeShapes(layerData.shapes);\r\n } else if (layerData.ty === 5) {\r\n completeText(layerData, fontManager);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function findCompLayers(id, comps) {\r\n var i = 0;\r\n var len = comps.length;\r\n while (i < len) {\r\n if (comps[i].id === id) {\r\n if (!comps[i].layers.__used) {\r\n comps[i].layers.__used = true;\r\n return comps[i].layers;\r\n }\r\n return JSON.parse(JSON.stringify(comps[i].layers));\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function completeShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k);\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function convertPathsToAbsoluteValues(path) {\r\n var i;\r\n var len = path.i.length;\r\n for (i = 0; i < len; i += 1) {\r\n path.i[i][0] += path.v[i][0];\r\n path.i[i][1] += path.v[i][1];\r\n path.o[i][0] += path.v[i][0];\r\n path.o[i][1] += path.v[i][1];\r\n }\r\n }\r\n\r\n function checkVersion(minimum, animVersionString) {\r\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\r\n if (minimum[0] > animVersion[0]) {\r\n return true;\r\n } if (animVersion[0] > minimum[0]) {\r\n return false;\r\n }\r\n if (minimum[1] > animVersion[1]) {\r\n return true;\r\n } if (animVersion[1] > minimum[1]) {\r\n return false;\r\n }\r\n if (minimum[2] > animVersion[2]) {\r\n return true;\r\n } if (animVersion[2] > minimum[2]) {\r\n return false;\r\n }\r\n return null;\r\n }\r\n\r\n var checkText = (function () {\r\n var minimumVersion = [4, 4, 14];\r\n\r\n function updateTextLayer(textLayer) {\r\n var documentData = textLayer.t.d;\r\n textLayer.t.d = {\r\n k: [\r\n {\r\n s: documentData,\r\n t: 0,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 5) {\r\n updateTextLayer(layers[i]);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkChars = (function () {\r\n var minimumVersion = [4, 7, 99];\r\n return function (animationData) {\r\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\r\n var i;\r\n var len = animationData.chars.length;\r\n var j;\r\n var jLen;\r\n var pathData;\r\n var paths;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.chars[i].data && animationData.chars[i].data.shapes) {\r\n paths = animationData.chars[i].data.shapes[0].it;\r\n jLen = paths.length;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = paths[j].ks.k;\r\n if (!pathData.__converted) {\r\n convertPathsToAbsoluteValues(paths[j].ks.k);\r\n pathData.__converted = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkColors = (function () {\r\n var minimumVersion = [4, 1, 9];\r\n\r\n function iterateShapes(shapes) {\r\n var i;\r\n var len = shapes.length;\r\n var j;\r\n var jLen;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n iterateShapes(shapes[i].it);\r\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\r\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\r\n jLen = shapes[i].c.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (shapes[i].c.k[j].s) {\r\n shapes[i].c.k[j].s[0] /= 255;\r\n shapes[i].c.k[j].s[1] /= 255;\r\n shapes[i].c.k[j].s[2] /= 255;\r\n shapes[i].c.k[j].s[3] /= 255;\r\n }\r\n if (shapes[i].c.k[j].e) {\r\n shapes[i].c.k[j].e[0] /= 255;\r\n shapes[i].c.k[j].e[1] /= 255;\r\n shapes[i].c.k[j].e[2] /= 255;\r\n shapes[i].c.k[j].e[3] /= 255;\r\n }\r\n }\r\n } else {\r\n shapes[i].c.k[0] /= 255;\r\n shapes[i].c.k[1] /= 255;\r\n shapes[i].c.k[2] /= 255;\r\n shapes[i].c.k[3] /= 255;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var i;\r\n var len = layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (layers[i].ty === 4) {\r\n iterateShapes(layers[i].shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n var checkShapes = (function () {\r\n var minimumVersion = [4, 4, 18];\r\n\r\n function completeClosingShapes(arr) {\r\n var i;\r\n var len = arr.length;\r\n var j;\r\n var jLen;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (arr[i].ty === 'sh') {\r\n if (arr[i].ks.k.i) {\r\n arr[i].ks.k.c = arr[i].closed;\r\n } else {\r\n jLen = arr[i].ks.k.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (arr[i].ks.k[j].s) {\r\n arr[i].ks.k[j].s[0].c = arr[i].closed;\r\n }\r\n if (arr[i].ks.k[j].e) {\r\n arr[i].ks.k[j].e[0].c = arr[i].closed;\r\n }\r\n }\r\n }\r\n } else if (arr[i].ty === 'gr') {\r\n completeClosingShapes(arr[i].it);\r\n }\r\n }\r\n }\r\n\r\n function iterateLayers(layers) {\r\n var layerData;\r\n var i;\r\n var len = layers.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n for (i = 0; i < len; i += 1) {\r\n layerData = layers[i];\r\n if (layerData.hasMask) {\r\n var maskProps = layerData.masksProperties;\r\n jLen = maskProps.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (maskProps[j].pt.k.i) {\r\n maskProps[j].pt.k.c = maskProps[j].cl;\r\n } else {\r\n kLen = maskProps[j].pt.k.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n if (maskProps[j].pt.k[k].s) {\r\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\r\n }\r\n if (maskProps[j].pt.k[k].e) {\r\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (layerData.ty === 4) {\r\n completeClosingShapes(layerData.shapes);\r\n }\r\n }\r\n }\r\n\r\n return function (animationData) {\r\n if (checkVersion(minimumVersion, animationData.v)) {\r\n iterateLayers(animationData.layers);\r\n if (animationData.assets) {\r\n var i;\r\n var len = animationData.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (animationData.assets[i].layers) {\r\n iterateLayers(animationData.assets[i].layers);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }());\r\n\r\n function completeData(animationData, fontManager) {\r\n if (animationData.__complete) {\r\n return;\r\n }\r\n checkColors(animationData);\r\n checkText(animationData);\r\n checkChars(animationData);\r\n checkShapes(animationData);\r\n completeLayers(animationData.layers, animationData.assets, fontManager);\r\n animationData.__complete = true;\r\n }\r\n\r\n function completeText(data) {\r\n if (data.t.a.length === 0 && !('m' in data.t.p)) {\r\n data.singleShape = true;\r\n }\r\n }\r\n\r\n var moduleOb = {};\r\n moduleOb.completeData = completeData;\r\n moduleOb.checkColors = checkColors;\r\n moduleOb.checkChars = checkChars;\r\n moduleOb.checkShapes = checkShapes;\r\n moduleOb.completeLayers = completeLayers;\r\n\r\n return moduleOb;\r\n}\r\n\r\nvar dataManager = dataFunctionManager();\r\n\r\n/* exported getFontProperties */\r\n\r\nfunction getFontProperties(fontData) {\r\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\r\n\r\n var fWeight = 'normal'; var\r\n fStyle = 'normal';\r\n var len = styles.length;\r\n var styleName;\r\n for (var i = 0; i < len; i += 1) {\r\n styleName = styles[i].toLowerCase();\r\n switch (styleName) {\r\n case 'italic':\r\n fStyle = 'italic';\r\n break;\r\n case 'bold':\r\n fWeight = '700';\r\n break;\r\n case 'black':\r\n fWeight = '900';\r\n break;\r\n case 'medium':\r\n fWeight = '500';\r\n break;\r\n case 'regular':\r\n case 'normal':\r\n fWeight = '400';\r\n break;\r\n case 'light':\r\n case 'thin':\r\n fWeight = '200';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return {\r\n style: fStyle,\r\n weight: fontData.fWeight || fWeight,\r\n };\r\n}\r\n\r\n/* global createNS, createTag, getFontProperties */\r\n/* exported FontManager */\r\n\r\nvar FontManager = (function () {\r\n var maxWaitingTime = 5000;\r\n var emptyChar = {\r\n w: 0,\r\n size: 0,\r\n shapes: [],\r\n };\r\n var combinedCharacters = [];\r\n // Hindi characters\r\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366,\r\n 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,\r\n 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\r\n\r\n function trimFontOptions(font) {\r\n var familyArray = font.split(',');\r\n var i;\r\n var len = familyArray.length;\r\n var enabledFamilies = [];\r\n for (i = 0; i < len; i += 1) {\r\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\r\n enabledFamilies.push(familyArray[i]);\r\n }\r\n }\r\n return enabledFamilies.join(',');\r\n }\r\n\r\n function setUpNode(font, family) {\r\n var parentNode = createTag('span');\r\n // Node is invisible to screen readers.\r\n parentNode.setAttribute('aria-hidden', true);\r\n parentNode.style.fontFamily = family;\r\n var node = createTag('span');\r\n // Characters that vary significantly among different fonts\r\n node.innerText = 'giItT1WQy@!-/#';\r\n // Visible - so we can measure it - but not on the screen\r\n parentNode.style.position = 'absolute';\r\n parentNode.style.left = '-10000px';\r\n parentNode.style.top = '-10000px';\r\n // Large font size makes even subtle changes obvious\r\n parentNode.style.fontSize = '300px';\r\n // Reset any font properties\r\n parentNode.style.fontVariant = 'normal';\r\n parentNode.style.fontStyle = 'normal';\r\n parentNode.style.fontWeight = 'normal';\r\n parentNode.style.letterSpacing = '0';\r\n parentNode.appendChild(node);\r\n document.body.appendChild(parentNode);\r\n\r\n // Remember width with no applied web font\r\n var width = node.offsetWidth;\r\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\r\n return { node: node, w: width, parent: parentNode };\r\n }\r\n\r\n function checkLoadedFonts() {\r\n var i;\r\n var len = this.fonts.length;\r\n var node;\r\n var w;\r\n var loadedCount = len;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.fonts[i].loaded) {\r\n loadedCount -= 1;\r\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].monoCase.node;\r\n w = this.fonts[i].monoCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n } else {\r\n node = this.fonts[i].sansCase.node;\r\n w = this.fonts[i].sansCase.w;\r\n if (node.offsetWidth !== w) {\r\n loadedCount -= 1;\r\n this.fonts[i].loaded = true;\r\n }\r\n }\r\n if (this.fonts[i].loaded) {\r\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\r\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\r\n }\r\n }\r\n }\r\n\r\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\r\n setTimeout(this.checkLoadedFontsBinded, 20);\r\n } else {\r\n setTimeout(this.setIsLoadedBinded, 10);\r\n }\r\n }\r\n\r\n function createHelper(def, fontData) {\r\n var tHelper = createNS('text');\r\n tHelper.style.fontSize = '100px';\r\n // tHelper.style.fontFamily = fontData.fFamily;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n tHelper.setAttribute('font-family', fontData.fFamily);\r\n tHelper.setAttribute('font-style', fontProps.style);\r\n tHelper.setAttribute('font-weight', fontProps.weight);\r\n tHelper.textContent = '1';\r\n if (fontData.fClass) {\r\n tHelper.style.fontFamily = 'inherit';\r\n tHelper.setAttribute('class', fontData.fClass);\r\n } else {\r\n tHelper.style.fontFamily = fontData.fFamily;\r\n }\r\n def.appendChild(tHelper);\r\n var tCanvasHelper = createTag('canvas').getContext('2d');\r\n tCanvasHelper.font = fontData.fWeight + ' ' + fontData.fStyle + ' 100px ' + fontData.fFamily;\r\n // tCanvasHelper.font = ' 100px '+ fontData.fFamily;\r\n return tHelper;\r\n }\r\n\r\n function addFonts(fontData, defs) {\r\n if (!fontData) {\r\n this.isLoaded = true;\r\n return;\r\n }\r\n if (this.chars) {\r\n this.isLoaded = true;\r\n this.fonts = fontData.list;\r\n return;\r\n }\r\n\r\n var fontArr = fontData.list;\r\n var i;\r\n var len = fontArr.length;\r\n var _pendingFonts = len;\r\n for (i = 0; i < len; i += 1) {\r\n var shouldLoadFont = true;\r\n var loadedSelector;\r\n var j;\r\n fontArr[i].loaded = false;\r\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\r\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\r\n if (!fontArr[i].fPath) {\r\n fontArr[i].loaded = true;\r\n _pendingFonts -= 1;\r\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\r\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\r\n\r\n if (loadedSelector.length > 0) {\r\n shouldLoadFont = false;\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var s = createTag('style');\r\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n s.setAttribute('f-origin', fontArr[i].origin);\r\n s.setAttribute('f-family', fontArr[i].fFamily);\r\n s.type = 'text/css';\r\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\r\n defs.appendChild(s);\r\n }\r\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\r\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var l = createTag('link');\r\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n l.setAttribute('f-origin', fontArr[i].origin);\r\n l.type = 'text/css';\r\n l.rel = 'stylesheet';\r\n l.href = fontArr[i].fPath;\r\n document.body.appendChild(l);\r\n }\r\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\r\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\r\n\r\n for (j = 0; j < loadedSelector.length; j += 1) {\r\n if (fontArr[i].fPath === loadedSelector[j].src) {\r\n // Font is already loaded\r\n shouldLoadFont = false;\r\n }\r\n }\r\n\r\n if (shouldLoadFont) {\r\n var sc = createTag('link');\r\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\r\n sc.setAttribute('f-origin', fontArr[i].origin);\r\n sc.setAttribute('rel', 'stylesheet');\r\n sc.setAttribute('href', fontArr[i].fPath);\r\n defs.appendChild(sc);\r\n }\r\n }\r\n fontArr[i].helper = createHelper(defs, fontArr[i]);\r\n fontArr[i].cache = {};\r\n this.fonts.push(fontArr[i]);\r\n }\r\n if (_pendingFonts === 0) {\r\n this.isLoaded = true;\r\n } else {\r\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\r\n // Adding this timeout seems to fix it\r\n setTimeout(this.checkLoadedFonts.bind(this), 100);\r\n }\r\n }\r\n\r\n function addChars(chars) {\r\n if (!chars) {\r\n return;\r\n }\r\n if (!this.chars) {\r\n this.chars = [];\r\n }\r\n var i;\r\n var len = chars.length;\r\n var j;\r\n var jLen = this.chars.length;\r\n var found;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n found = false;\r\n while (j < jLen) {\r\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\r\n found = true;\r\n }\r\n j += 1;\r\n }\r\n if (!found) {\r\n this.chars.push(chars[i]);\r\n jLen += 1;\r\n }\r\n }\r\n }\r\n\r\n function getCharData(char, style, font) {\r\n var i = 0;\r\n var len = this.chars.length;\r\n while (i < len) {\r\n if (this.chars[i].ch === char && this.chars[i].style === style && this.chars[i].fFamily === font) {\r\n return this.chars[i];\r\n }\r\n i += 1;\r\n }\r\n if (((typeof char === 'string' && char.charCodeAt(0) !== 13) || !char)\r\n && console\r\n && console.warn // eslint-disable-line no-console\r\n && !this._warned\r\n ) {\r\n this._warned = true;\r\n console.warn('Missing character from exported characters list: ', char, style, font); // eslint-disable-line no-console\r\n }\r\n return emptyChar;\r\n }\r\n\r\n function measureText(char, fontName, size) {\r\n var fontData = this.getFontByName(fontName);\r\n var index = char.charCodeAt(0);\r\n if (!fontData.cache[index + 1]) {\r\n var tHelper = fontData.helper;\r\n // Canvas version\r\n // fontData.cache[index] = tHelper.measureText(char).width / 100;\r\n // SVG version\r\n // console.log(tHelper.getBBox().width)\r\n if (char === ' ') {\r\n tHelper.textContent = '|' + char + '|';\r\n var doubleSize = tHelper.getComputedTextLength();\r\n tHelper.textContent = '||';\r\n var singleSize = tHelper.getComputedTextLength();\r\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\r\n } else {\r\n tHelper.textContent = char;\r\n fontData.cache[index + 1] = (tHelper.getComputedTextLength()) / 100;\r\n }\r\n }\r\n return fontData.cache[index + 1] * size;\r\n }\r\n\r\n function getFontByName(name) {\r\n var i = 0;\r\n var len = this.fonts.length;\r\n while (i < len) {\r\n if (this.fonts[i].fName === name) {\r\n return this.fonts[i];\r\n }\r\n i += 1;\r\n }\r\n return this.fonts[0];\r\n }\r\n\r\n function getCombinedCharacterCodes() {\r\n return combinedCharacters;\r\n }\r\n\r\n function setIsLoaded() {\r\n this.isLoaded = true;\r\n }\r\n\r\n var Font = function () {\r\n this.fonts = [];\r\n this.chars = null;\r\n this.typekitLoaded = 0;\r\n this.isLoaded = false;\r\n this._warned = false;\r\n this.initTime = Date.now();\r\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\r\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\r\n };\r\n // TODO: for now I'm adding these methods to the Class and not the prototype. Think of a better way to implement it.\r\n Font.getCombinedCharacterCodes = getCombinedCharacterCodes;\r\n\r\n var fontPrototype = {\r\n addChars: addChars,\r\n addFonts: addFonts,\r\n getCharData: getCharData,\r\n getFontByName: getFontByName,\r\n measureText: measureText,\r\n checkLoadedFonts: checkLoadedFonts,\r\n setIsLoaded: setIsLoaded,\r\n };\r\n\r\n Font.prototype = fontPrototype;\r\n\r\n return Font;\r\n}());\r\n\r\n/* global initialDefaultFrame, BezierFactory, degToRads, bez, createTypedArray */\r\n/* exported PropertyFactory */\r\n\r\nvar PropertyFactory = (function () {\r\n var initFrame = initialDefaultFrame;\r\n var mathAbs = Math.abs;\r\n\r\n function interpolateValue(frameNum, caching) {\r\n var offsetTime = this.offsetTime;\r\n var newValue;\r\n if (this.propType === 'multidimensional') {\r\n newValue = createTypedArray('float32', this.pv.length);\r\n }\r\n var iterationIndex = caching.lastIndex;\r\n var i = iterationIndex;\r\n var len = this.keyframes.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n\r\n while (flag) {\r\n keyData = this.keyframes[i];\r\n nextKeyData = this.keyframes[i + 1];\r\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\r\n if (keyData.h) {\r\n keyData = nextKeyData;\r\n }\r\n iterationIndex = 0;\r\n break;\r\n }\r\n if ((nextKeyData.t - offsetTime) > frameNum) {\r\n iterationIndex = i;\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n iterationIndex = 0;\r\n flag = false;\r\n }\r\n }\r\n\r\n var k;\r\n var kLen;\r\n var perc;\r\n var jLen;\r\n var j;\r\n var fnc;\r\n var nextKeyTime = nextKeyData.t - offsetTime;\r\n var keyTime = keyData.t - offsetTime;\r\n var endValue;\r\n if (keyData.to) {\r\n if (!keyData.bezierData) {\r\n keyData.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\r\n }\r\n var bezierData = keyData.bezierData;\r\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\r\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\r\n kLen = bezierData.points[ind].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[ind].point[k];\r\n }\r\n // caching._lastKeyframeIndex = -1;\r\n } else {\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n var distanceInLine = bezierData.segmentLength * perc;\r\n\r\n var segmentPerc;\r\n var addedLength = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastAddedLength : 0;\r\n j = (caching.lastFrame < frameNum && caching._lastKeyframeIndex === i) ? caching._lastPoint : 0;\r\n flag = true;\r\n jLen = bezierData.points.length;\r\n while (flag) {\r\n addedLength += bezierData.points[j].partialLength;\r\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k];\r\n }\r\n break;\r\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\r\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\r\n kLen = bezierData.points[j].point.length;\r\n for (k = 0; k < kLen; k += 1) {\r\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\r\n }\r\n break;\r\n }\r\n if (j < jLen - 1) {\r\n j += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n caching._lastPoint = j;\r\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\r\n caching._lastKeyframeIndex = i;\r\n }\r\n } else {\r\n var outX;\r\n var outY;\r\n var inX;\r\n var inY;\r\n var keyValue;\r\n len = keyData.s.length;\r\n endValue = nextKeyData.s || keyData.e;\r\n if (this.sh && keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n newValue[0] = endValue[0];\r\n newValue[1] = endValue[1];\r\n newValue[2] = endValue[2];\r\n } else if (frameNum <= keyTime) {\r\n newValue[0] = keyData.s[0];\r\n newValue[1] = keyData.s[1];\r\n newValue[2] = keyData.s[2];\r\n } else {\r\n var quatStart = createQuaternion(keyData.s);\r\n var quatEnd = createQuaternion(endValue);\r\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\r\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\r\n }\r\n } else {\r\n for (i = 0; i < len; i += 1) {\r\n if (keyData.h !== 1) {\r\n if (frameNum >= nextKeyTime) {\r\n perc = 1;\r\n } else if (frameNum < keyTime) {\r\n perc = 0;\r\n } else {\r\n if (keyData.o.x.constructor === Array) {\r\n if (!keyData.__fnct) {\r\n keyData.__fnct = [];\r\n }\r\n if (!keyData.__fnct[i]) {\r\n outX = (typeof keyData.o.x[i] === 'undefined') ? keyData.o.x[0] : keyData.o.x[i];\r\n outY = (typeof keyData.o.y[i] === 'undefined') ? keyData.o.y[0] : keyData.o.y[i];\r\n inX = (typeof keyData.i.x[i] === 'undefined') ? keyData.i.x[0] : keyData.i.x[i];\r\n inY = (typeof keyData.i.y[i] === 'undefined') ? keyData.i.y[0] : keyData.i.y[i];\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct[i] = fnc;\r\n } else {\r\n fnc = keyData.__fnct[i];\r\n }\r\n } else if (!keyData.__fnct) {\r\n outX = keyData.o.x;\r\n outY = keyData.o.y;\r\n inX = keyData.i.x;\r\n inY = keyData.i.y;\r\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\r\n keyData.__fnct = fnc;\r\n } else {\r\n fnc = keyData.__fnct;\r\n }\r\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\r\n }\r\n }\r\n\r\n endValue = nextKeyData.s || keyData.e;\r\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\r\n\r\n if (this.propType === 'multidimensional') {\r\n newValue[i] = keyValue;\r\n } else {\r\n newValue = keyValue;\r\n }\r\n }\r\n }\r\n }\r\n caching.lastIndex = iterationIndex;\r\n return newValue;\r\n }\r\n\r\n // based on @Toji's https://github.com/toji/gl-matrix/\r\n function slerp(a, b, t) {\r\n var out = [];\r\n var ax = a[0];\r\n var ay = a[1];\r\n var az = a[2];\r\n var aw = a[3];\r\n var bx = b[0];\r\n var by = b[1];\r\n var bz = b[2];\r\n var bw = b[3];\r\n\r\n var omega;\r\n var cosom;\r\n var sinom;\r\n var scale0;\r\n var scale1;\r\n\r\n cosom = ax * bx + ay * by + az * bz + aw * bw;\r\n if (cosom < 0.0) {\r\n cosom = -cosom;\r\n bx = -bx;\r\n by = -by;\r\n bz = -bz;\r\n bw = -bw;\r\n }\r\n if ((1.0 - cosom) > 0.000001) {\r\n omega = Math.acos(cosom);\r\n sinom = Math.sin(omega);\r\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\r\n scale1 = Math.sin(t * omega) / sinom;\r\n } else {\r\n scale0 = 1.0 - t;\r\n scale1 = t;\r\n }\r\n out[0] = scale0 * ax + scale1 * bx;\r\n out[1] = scale0 * ay + scale1 * by;\r\n out[2] = scale0 * az + scale1 * bz;\r\n out[3] = scale0 * aw + scale1 * bw;\r\n\r\n return out;\r\n }\r\n\r\n function quaternionToEuler(out, quat) {\r\n var qx = quat[0];\r\n var qy = quat[1];\r\n var qz = quat[2];\r\n var qw = quat[3];\r\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\r\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\r\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\r\n out[0] = heading / degToRads;\r\n out[1] = attitude / degToRads;\r\n out[2] = bank / degToRads;\r\n }\r\n\r\n function createQuaternion(values) {\r\n var heading = values[0] * degToRads;\r\n var attitude = values[1] * degToRads;\r\n var bank = values[2] * degToRads;\r\n var c1 = Math.cos(heading / 2);\r\n var c2 = Math.cos(attitude / 2);\r\n var c3 = Math.cos(bank / 2);\r\n var s1 = Math.sin(heading / 2);\r\n var s2 = Math.sin(attitude / 2);\r\n var s3 = Math.sin(bank / 2);\r\n var w = c1 * c2 * c3 - s1 * s2 * s3;\r\n var x = s1 * s2 * c3 + c1 * c2 * s3;\r\n var y = s1 * c2 * c3 + c1 * s2 * s3;\r\n var z = c1 * s2 * c3 - s1 * c2 * s3;\r\n\r\n return [x, y, z, w];\r\n }\r\n\r\n function getValueAtCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n if (!(frameNum === this._caching.lastFrame || (this._caching.lastFrame !== initFrame && ((this._caching.lastFrame >= endTime && frameNum >= endTime) || (this._caching.lastFrame < initTime && frameNum < initTime))))) {\r\n if (this._caching.lastFrame >= frameNum) {\r\n this._caching._lastKeyframeIndex = -1;\r\n this._caching.lastIndex = 0;\r\n }\r\n\r\n var renderResult = this.interpolateValue(frameNum, this._caching);\r\n this.pv = renderResult;\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function setVValue(val) {\r\n var multipliedValue;\r\n if (this.propType === 'unidimensional') {\r\n multipliedValue = val * this.mult;\r\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\r\n this.v = multipliedValue;\r\n this._mdf = true;\r\n }\r\n } else {\r\n var i = 0;\r\n var len = this.v.length;\r\n while (i < len) {\r\n multipliedValue = val[i] * this.mult;\r\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\r\n this.v[i] = multipliedValue;\r\n this._mdf = true;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = this._isFirstFrame;\r\n var i;\r\n var len = this.effectsSequence.length;\r\n var finalValue = this.kf ? this.pv : this.data.k;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this._isFirstFrame = false;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n function ValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this.v = mult ? data.k * mult : data.k;\r\n this.pv = data.k;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.vel = 0;\r\n this.effectsSequence = [];\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function MultiDimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n this.mult = mult || 1;\r\n this.data = data;\r\n this._mdf = false;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.k = false;\r\n this.kf = false;\r\n this.frameId = -1;\r\n var i;\r\n var len = data.k.length;\r\n this.v = createTypedArray('float32', len);\r\n this.pv = createTypedArray('float32', len);\r\n this.vel = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.v[i] = data.k[i] * this.mult;\r\n this.pv[i] = data.k[i];\r\n }\r\n this._isFirstFrame = true;\r\n this.effectsSequence = [];\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedValueProperty(elem, data, mult, container) {\r\n this.propType = 'unidimensional';\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.frameId = -1;\r\n this._caching = {\r\n lastFrame: initFrame, lastIndex: 0, value: 0, _lastKeyframeIndex: -1,\r\n };\r\n this.k = true;\r\n this.kf = true;\r\n this.data = data;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.v = initFrame;\r\n this.pv = initFrame;\r\n this._isFirstFrame = true;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\r\n this.propType = 'multidimensional';\r\n var i;\r\n var len = data.k.length;\r\n var s;\r\n var e;\r\n var to;\r\n var ti;\r\n for (i = 0; i < len - 1; i += 1) {\r\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\r\n s = data.k[i].s;\r\n e = data.k[i + 1].s;\r\n to = data.k[i].to;\r\n ti = data.k[i].ti;\r\n if ((s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1])) || (s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2]))) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\r\n if (s.length === 2 || (s[2] === e[2] && to[2] === 0 && ti[2] === 0)) {\r\n data.k[i].to = null;\r\n data.k[i].ti = null;\r\n }\r\n }\r\n }\r\n }\r\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\r\n this.data = data;\r\n this.keyframes = data.k;\r\n this.offsetTime = elem.data.st;\r\n this.k = true;\r\n this.kf = true;\r\n this._isFirstFrame = true;\r\n this.mult = mult || 1;\r\n this.elem = elem;\r\n this.container = container;\r\n this.comp = elem.comp;\r\n this.getValue = processEffectsSequence;\r\n this.setVValue = setVValue;\r\n this.interpolateValue = interpolateValue;\r\n this.frameId = -1;\r\n var arrLen = data.k[0].s.length;\r\n this.v = createTypedArray('float32', arrLen);\r\n this.pv = createTypedArray('float32', arrLen);\r\n for (i = 0; i < arrLen; i += 1) {\r\n this.v[i] = initFrame;\r\n this.pv[i] = initFrame;\r\n }\r\n this._caching = { lastFrame: initFrame, lastIndex: 0, value: createTypedArray('float32', arrLen) };\r\n this.addEffect = addEffect;\r\n }\r\n\r\n function getProp(elem, data, type, mult, container) {\r\n var p;\r\n if (!data.k.length) {\r\n p = new ValueProperty(elem, data, mult, container);\r\n } else if (typeof (data.k[0]) === 'number') {\r\n p = new MultiDimensionalProperty(elem, data, mult, container);\r\n } else {\r\n switch (type) {\r\n case 0:\r\n p = new KeyframedValueProperty(elem, data, mult, container);\r\n break;\r\n case 1:\r\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n if (p.effectsSequence.length) {\r\n container.addDynamicProperty(p);\r\n }\r\n return p;\r\n }\r\n\r\n var ob = {\r\n getProp: getProp,\r\n };\r\n return ob;\r\n}());\r\n\r\n/* global Matrix, degToRads, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n/* exported TransformPropertyFactory */\r\n\r\nvar TransformPropertyFactory = (function () {\r\n var defaultVector = [0, 0];\r\n\r\n function applyToMatrix(mat) {\r\n var _mdf = this._mdf;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || _mdf;\r\n if (this.a) {\r\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.s) {\r\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk) {\r\n mat.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r) {\r\n mat.rotate(-this.r.v);\r\n } else {\r\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.data.p.s) {\r\n if (this.data.p.z) {\r\n mat.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n mat.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n function processKeys(forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n if (this._isDirty) {\r\n this.precalculateMatrix();\r\n this._isDirty = false;\r\n }\r\n\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf || forceRender) {\r\n var frameRate;\r\n this.v.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n }\r\n if (this.appliedTransformations < 2) {\r\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n this.v.rotate(-this.r.v);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n }\r\n if (this.autoOriented) {\r\n var v1;\r\n var v2;\r\n frameRate = this.elem.globalData.frameRate;\r\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\r\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\r\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\r\n v1 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t / frameRate), 0);\r\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\r\n } else {\r\n v1 = this.p.pv;\r\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\r\n }\r\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\r\n v1 = [];\r\n v2 = [];\r\n var px = this.px;\r\n var py = this.py;\r\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[0].t) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[0].t) / frameRate, 0);\r\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\r\n v1[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t / frameRate), 0);\r\n v1[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t / frameRate), 0);\r\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\r\n } else {\r\n v1 = [px.pv, py.pv];\r\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\r\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\r\n }\r\n } else {\r\n v2 = defaultVector;\r\n v1 = v2;\r\n }\r\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n if (this.data.p.z) {\r\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\r\n } else {\r\n this.v.translate(this.px.v, this.py.v, 0);\r\n }\r\n } else {\r\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\r\n }\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function precalculateMatrix() {\r\n if (!this.a.k) {\r\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\r\n this.appliedTransformations = 1;\r\n } else {\r\n return;\r\n }\r\n if (!this.s.effectsSequence.length) {\r\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\r\n this.appliedTransformations = 2;\r\n } else {\r\n return;\r\n }\r\n if (this.sk) {\r\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\r\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\r\n this.appliedTransformations = 3;\r\n } else {\r\n return;\r\n }\r\n }\r\n if (this.r) {\r\n if (!this.r.effectsSequence.length) {\r\n this.pre.rotate(-this.r.v);\r\n this.appliedTransformations = 4;\r\n }\r\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\r\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2])\r\n .rotateY(this.or.v[1])\r\n .rotateX(this.or.v[0]);\r\n this.appliedTransformations = 4;\r\n }\r\n }\r\n\r\n function autoOrient() {\r\n //\r\n // var prevP = this.getValueAtTime();\r\n }\r\n\r\n function addDynamicProperty(prop) {\r\n this._addDynamicProperty(prop);\r\n this.elem.addDynamicProperty(prop);\r\n this._isDirty = true;\r\n }\r\n\r\n function TransformProperty(elem, data, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.propType = 'transform';\r\n this.data = data;\r\n this.v = new Matrix();\r\n // Precalculated matrix with non animated properties\r\n this.pre = new Matrix();\r\n this.appliedTransformations = 0;\r\n this.initDynamicPropertyContainer(container || elem);\r\n if (data.p && data.p.s) {\r\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\r\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\r\n if (data.p.z) {\r\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\r\n }\r\n } else {\r\n this.p = PropertyFactory.getProp(elem, data.p || { k: [0, 0, 0] }, 1, 0, this);\r\n }\r\n if (data.rx) {\r\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\r\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\r\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\r\n if (data.or.k[0].ti) {\r\n var i;\r\n var len = data.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.or.k[i].to = null;\r\n data.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\r\n // sh Indicates it needs to be capped between -180 and 180\r\n this.or.sh = true;\r\n } else {\r\n this.r = PropertyFactory.getProp(elem, data.r || { k: 0 }, 0, degToRads, this);\r\n }\r\n if (data.sk) {\r\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\r\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\r\n }\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: [0, 0, 0] }, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: [100, 100, 100] }, 1, 0.01, this);\r\n // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\r\n if (data.o) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\r\n } else {\r\n this.o = { _mdf: false, v: 1 };\r\n }\r\n this._isDirty = true;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n }\r\n\r\n TransformProperty.prototype = {\r\n applyToMatrix: applyToMatrix,\r\n getValue: processKeys,\r\n precalculateMatrix: precalculateMatrix,\r\n autoOrient: autoOrient,\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], TransformProperty);\r\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\r\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\r\n\r\n function getTransformProperty(elem, data, container) {\r\n return new TransformProperty(elem, data, container);\r\n }\r\n\r\n return {\r\n getTransformProperty: getTransformProperty,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, createSizedArray, pointPool */\r\n\r\nfunction ShapePath() {\r\n this.c = false;\r\n this._length = 0;\r\n this._maxLength = 8;\r\n this.v = createSizedArray(this._maxLength);\r\n this.o = createSizedArray(this._maxLength);\r\n this.i = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapePath.prototype.setPathData = function (closed, len) {\r\n this.c = closed;\r\n this.setLength(len);\r\n var i = 0;\r\n while (i < len) {\r\n this.v[i] = pointPool.newElement();\r\n this.o[i] = pointPool.newElement();\r\n this.i[i] = pointPool.newElement();\r\n i += 1;\r\n }\r\n};\r\n\r\nShapePath.prototype.setLength = function (len) {\r\n while (this._maxLength < len) {\r\n this.doubleArrayLength();\r\n }\r\n this._length = len;\r\n};\r\n\r\nShapePath.prototype.doubleArrayLength = function () {\r\n this.v = this.v.concat(createSizedArray(this._maxLength));\r\n this.i = this.i.concat(createSizedArray(this._maxLength));\r\n this.o = this.o.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n};\r\n\r\nShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\r\n var arr;\r\n this._length = Math.max(this._length, pos + 1);\r\n if (this._length >= this._maxLength) {\r\n this.doubleArrayLength();\r\n }\r\n switch (type) {\r\n case 'v':\r\n arr = this.v;\r\n break;\r\n case 'i':\r\n arr = this.i;\r\n break;\r\n case 'o':\r\n arr = this.o;\r\n break;\r\n default:\r\n arr = [];\r\n break;\r\n }\r\n if (!arr[pos] || (arr[pos] && !replace)) {\r\n arr[pos] = pointPool.newElement();\r\n }\r\n arr[pos][0] = x;\r\n arr[pos][1] = y;\r\n};\r\n\r\nShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\r\n this.setXYAt(vX, vY, 'v', pos, replace);\r\n this.setXYAt(oX, oY, 'o', pos, replace);\r\n this.setXYAt(iX, iY, 'i', pos, replace);\r\n};\r\n\r\nShapePath.prototype.reverse = function () {\r\n var newPath = new ShapePath();\r\n newPath.setPathData(this.c, this._length);\r\n var vertices = this.v;\r\n var outPoints = this.o;\r\n var inPoints = this.i;\r\n var init = 0;\r\n if (this.c) {\r\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\r\n init = 1;\r\n }\r\n var cnt = this._length - 1;\r\n var len = this._length;\r\n\r\n var i;\r\n for (i = init; i < len; i += 1) {\r\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\r\n cnt -= 1;\r\n }\r\n return newPath;\r\n};\r\n\r\n/* global extendPrototype, roundCorner, BezierFactory, shapePool, degToRads,\r\n shapeCollectionPool, PropertyFactory, bmMin, DynamicPropertyContainer */\r\n/* exported ShapePropertyFactory */\r\n\r\nvar ShapePropertyFactory = (function () {\r\n var initFrame = -999999;\r\n\r\n function interpolateShape(frameNum, previousValue, caching) {\r\n var iterationIndex = caching.lastIndex;\r\n var keyPropS;\r\n var keyPropE;\r\n var isHold;\r\n var j;\r\n var k;\r\n var jLen;\r\n var kLen;\r\n var perc;\r\n var vertexValue;\r\n var kf = this.keyframes;\r\n if (frameNum < kf[0].t - this.offsetTime) {\r\n keyPropS = kf[0].s[0];\r\n isHold = true;\r\n iterationIndex = 0;\r\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\r\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\r\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\r\n isHold = true;\r\n } else {\r\n var i = iterationIndex;\r\n var len = kf.length - 1;\r\n var flag = true;\r\n var keyData;\r\n var nextKeyData;\r\n while (flag) {\r\n keyData = kf[i];\r\n nextKeyData = kf[i + 1];\r\n if ((nextKeyData.t - this.offsetTime) > frameNum) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n i += 1;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n isHold = keyData.h === 1;\r\n iterationIndex = i;\r\n if (!isHold) {\r\n if (frameNum >= nextKeyData.t - this.offsetTime) {\r\n perc = 1;\r\n } else if (frameNum < keyData.t - this.offsetTime) {\r\n perc = 0;\r\n } else {\r\n var fnc;\r\n if (keyData.__fnct) {\r\n fnc = keyData.__fnct;\r\n } else {\r\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\r\n keyData.__fnct = fnc;\r\n }\r\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / ((nextKeyData.t - this.offsetTime) - (keyData.t - this.offsetTime)));\r\n }\r\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\r\n }\r\n keyPropS = keyData.s[0];\r\n }\r\n jLen = previousValue._length;\r\n kLen = keyPropS.i[0].length;\r\n caching.lastIndex = iterationIndex;\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n for (k = 0; k < kLen; k += 1) {\r\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\r\n previousValue.i[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\r\n previousValue.o[j][k] = vertexValue;\r\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\r\n previousValue.v[j][k] = vertexValue;\r\n }\r\n }\r\n }\r\n\r\n function interpolateShapeCurrentTime() {\r\n var frameNum = this.comp.renderedFrame - this.offsetTime;\r\n var initTime = this.keyframes[0].t - this.offsetTime;\r\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\r\n var lastFrame = this._caching.lastFrame;\r\n if (!(lastFrame !== initFrame && ((lastFrame < initTime && frameNum < initTime) || (lastFrame > endTime && frameNum > endTime)))) {\r\n /// /\r\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\r\n this.interpolateShape(frameNum, this.pv, this._caching);\r\n /// /\r\n }\r\n this._caching.lastFrame = frameNum;\r\n return this.pv;\r\n }\r\n\r\n function resetShape() {\r\n this.paths = this.localShapeCollection;\r\n }\r\n\r\n function shapesEqual(shape1, shape2) {\r\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\r\n return false;\r\n }\r\n var i;\r\n var len = shape1._length;\r\n for (i = 0; i < len; i += 1) {\r\n if (shape1.v[i][0] !== shape2.v[i][0]\r\n || shape1.v[i][1] !== shape2.v[i][1]\r\n || shape1.o[i][0] !== shape2.o[i][0]\r\n || shape1.o[i][1] !== shape2.o[i][1]\r\n || shape1.i[i][0] !== shape2.i[i][0]\r\n || shape1.i[i][1] !== shape2.i[i][1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function setVValue(newPath) {\r\n if (!shapesEqual(this.v, newPath)) {\r\n this.v = shapePool.clone(newPath);\r\n this.localShapeCollection.releaseShapes();\r\n this.localShapeCollection.addShape(this.v);\r\n this._mdf = true;\r\n this.paths = this.localShapeCollection;\r\n }\r\n }\r\n\r\n function processEffectsSequence() {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n } if (!this.effectsSequence.length) {\r\n this._mdf = false;\r\n return;\r\n }\r\n if (this.lock) {\r\n this.setVValue(this.pv);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var finalValue;\r\n if (this.kf) {\r\n finalValue = this.pv;\r\n } else if (this.data.ks) {\r\n finalValue = this.data.ks.k;\r\n } else {\r\n finalValue = this.data.pt.k;\r\n }\r\n var i;\r\n var len = this.effectsSequence.length;\r\n for (i = 0; i < len; i += 1) {\r\n finalValue = this.effectsSequence[i](finalValue);\r\n }\r\n this.setVValue(finalValue);\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n }\r\n\r\n function ShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.container = elem;\r\n this.elem = elem;\r\n this.data = data;\r\n this.k = false;\r\n this.kf = false;\r\n this._mdf = false;\r\n var pathData = type === 3 ? data.pt.k : data.ks.k;\r\n this.v = shapePool.clone(pathData);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.reset = resetShape;\r\n this.effectsSequence = [];\r\n }\r\n\r\n function addEffect(effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.container.addDynamicProperty(this);\r\n }\r\n\r\n ShapeProperty.prototype.interpolateShape = interpolateShape;\r\n ShapeProperty.prototype.getValue = processEffectsSequence;\r\n ShapeProperty.prototype.setVValue = setVValue;\r\n ShapeProperty.prototype.addEffect = addEffect;\r\n\r\n function KeyframedShapeProperty(elem, data, type) {\r\n this.propType = 'shape';\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.container = elem;\r\n this.offsetTime = elem.data.st;\r\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\r\n this.k = true;\r\n this.kf = true;\r\n var len = this.keyframes[0].s[0].i.length;\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(this.keyframes[0].s[0].c, len);\r\n this.pv = shapePool.clone(this.v);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.paths.addShape(this.v);\r\n this.lastFrame = initFrame;\r\n this.reset = resetShape;\r\n this._caching = { lastFrame: initFrame, lastIndex: 0 };\r\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\r\n }\r\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\r\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\r\n KeyframedShapeProperty.prototype.setVValue = setVValue;\r\n KeyframedShapeProperty.prototype.addEffect = addEffect;\r\n\r\n var EllShapeProperty = (function () {\r\n var cPoint = roundCorner;\r\n\r\n function EllShapePropertyFactory(elem, data) {\r\n /* this.v = {\r\n v: createSizedArray(4),\r\n i: createSizedArray(4),\r\n o: createSizedArray(4),\r\n c: true\r\n }; */\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 4);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.paths = this.localShapeCollection;\r\n this.localShapeCollection.addShape(this.v);\r\n this.d = data.d;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertEllToPath();\r\n }\r\n }\r\n\r\n EllShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n\r\n if (this._mdf) {\r\n this.convertEllToPath();\r\n }\r\n },\r\n convertEllToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var s0 = this.s.v[0] / 2;\r\n var s1 = this.s.v[1] / 2;\r\n var _cw = this.d !== 3;\r\n var _v = this.v;\r\n _v.v[0][0] = p0;\r\n _v.v[0][1] = p1 - s1;\r\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.v[1][1] = p1;\r\n _v.v[2][0] = p0;\r\n _v.v[2][1] = p1 + s1;\r\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.v[3][1] = p1;\r\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.i[0][1] = p1 - s1;\r\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.i[1][1] = p1 - s1 * cPoint;\r\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.i[2][1] = p1 + s1;\r\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.i[3][1] = p1 + s1 * cPoint;\r\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\r\n _v.o[0][1] = p1 - s1;\r\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\r\n _v.o[1][1] = p1 + s1 * cPoint;\r\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\r\n _v.o[2][1] = p1 + s1;\r\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\r\n _v.o[3][1] = p1 - s1 * cPoint;\r\n },\r\n };\r\n\r\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\r\n\r\n return EllShapePropertyFactory;\r\n }());\r\n\r\n var StarShapeProperty = (function () {\r\n function StarShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.setPathData(true, 0);\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.data = data;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n if (data.sy === 1) {\r\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\r\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\r\n this.convertToPath = this.convertStarToPath;\r\n } else {\r\n this.convertToPath = this.convertPolygonToPath;\r\n }\r\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\r\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\r\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertToPath();\r\n }\r\n }\r\n\r\n StarShapePropertyFactory.prototype = {\r\n reset: resetShape,\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertToPath();\r\n }\r\n },\r\n convertStarToPath: function () {\r\n var numPts = Math.floor(this.pt.v) * 2;\r\n var angle = (Math.PI * 2) / numPts;\r\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\r\n var longFlag = true;\r\n var longRad = this.or.v;\r\n var shortRad = this.ir.v;\r\n var longRound = this.os.v;\r\n var shortRound = this.is.v;\r\n var longPerimSegment = (2 * Math.PI * longRad) / (numPts * 2);\r\n var shortPerimSegment = (2 * Math.PI * shortRad) / (numPts * 2);\r\n var i;\r\n var rad;\r\n var roundness;\r\n var perimSegment;\r\n var currentAng = -Math.PI / 2;\r\n currentAng += this.r.v;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n rad = longFlag ? longRad : shortRad;\r\n roundness = longFlag ? longRound : shortRound;\r\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n\r\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\r\n longFlag = !longFlag;\r\n currentAng += angle * dir;\r\n }\r\n },\r\n convertPolygonToPath: function () {\r\n var numPts = Math.floor(this.pt.v);\r\n var angle = (Math.PI * 2) / numPts;\r\n var rad = this.or.v;\r\n var roundness = this.os.v;\r\n var perimSegment = (2 * Math.PI * rad) / (numPts * 4);\r\n var i;\r\n var currentAng = -Math.PI * 0.5;\r\n var dir = this.data.d === 3 ? -1 : 1;\r\n currentAng += this.r.v;\r\n this.v._length = 0;\r\n for (i = 0; i < numPts; i += 1) {\r\n var x = rad * Math.cos(currentAng);\r\n var y = rad * Math.sin(currentAng);\r\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\r\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\r\n x += +this.p.v[0];\r\n y += +this.p.v[1];\r\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\r\n currentAng += angle * dir;\r\n }\r\n this.paths.length = 0;\r\n this.paths[0] = this.v;\r\n },\r\n\r\n };\r\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\r\n\r\n return StarShapePropertyFactory;\r\n }());\r\n\r\n var RectShapeProperty = (function () {\r\n function RectShapePropertyFactory(elem, data) {\r\n this.v = shapePool.newElement();\r\n this.v.c = true;\r\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\r\n this.localShapeCollection.addShape(this.v);\r\n this.paths = this.localShapeCollection;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.frameId = -1;\r\n this.d = data.d;\r\n this.initDynamicPropertyContainer(elem);\r\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\r\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.k = false;\r\n this.convertRectToPath();\r\n }\r\n }\r\n\r\n RectShapePropertyFactory.prototype = {\r\n convertRectToPath: function () {\r\n var p0 = this.p.v[0];\r\n var p1 = this.p.v[1];\r\n var v0 = this.s.v[0] / 2;\r\n var v1 = this.s.v[1] / 2;\r\n var round = bmMin(v0, v1, this.r.v);\r\n var cPoint = round * (1 - roundCorner);\r\n this.v._length = 0;\r\n\r\n if (this.d === 2 || this.d === 1) {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\r\n }\r\n } else {\r\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\r\n if (round !== 0) {\r\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\r\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\r\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\r\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\r\n } else {\r\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\r\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\r\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\r\n }\r\n }\r\n },\r\n getValue: function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n if (this._mdf) {\r\n this.convertRectToPath();\r\n }\r\n },\r\n reset: resetShape,\r\n };\r\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\r\n\r\n return RectShapePropertyFactory;\r\n }());\r\n\r\n function getShapeProp(elem, data, type) {\r\n var prop;\r\n if (type === 3 || type === 4) {\r\n var dataProp = type === 3 ? data.pt : data.ks;\r\n var keys = dataProp.k;\r\n if (keys.length) {\r\n prop = new KeyframedShapeProperty(elem, data, type);\r\n } else {\r\n prop = new ShapeProperty(elem, data, type);\r\n }\r\n } else if (type === 5) {\r\n prop = new RectShapeProperty(elem, data);\r\n } else if (type === 6) {\r\n prop = new EllShapeProperty(elem, data);\r\n } else if (type === 7) {\r\n prop = new StarShapeProperty(elem, data);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n }\r\n\r\n function getConstructorFunction() {\r\n return ShapeProperty;\r\n }\r\n\r\n function getKeyframedConstructorFunction() {\r\n return KeyframedShapeProperty;\r\n }\r\n\r\n var ob = {};\r\n ob.getShapeProp = getShapeProp;\r\n ob.getConstructorFunction = getConstructorFunction;\r\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\r\n return ob;\r\n}());\r\n\r\n/* global shapeCollectionPool, initialDefaultFrame, extendPrototype, DynamicPropertyContainer */\r\n/* exported ShapeModifiers */\r\n\r\nvar ShapeModifiers = (function () {\r\n var ob = {};\r\n var modifiers = {};\r\n ob.registerModifier = registerModifier;\r\n ob.getModifier = getModifier;\r\n\r\n function registerModifier(nm, factory) {\r\n if (!modifiers[nm]) {\r\n modifiers[nm] = factory;\r\n }\r\n }\r\n\r\n function getModifier(nm, elem, data) {\r\n return new modifiers[nm](elem, data);\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\nfunction ShapeModifier() {}\r\nShapeModifier.prototype.initModifierProperties = function () {};\r\nShapeModifier.prototype.addShapeToModifier = function () {};\r\nShapeModifier.prototype.addShape = function (data) {\r\n if (!this.closed) {\r\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\r\n data.sh.container.addDynamicProperty(data.sh);\r\n var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollectionPool.newShapeCollection() };\r\n this.shapes.push(shapeData);\r\n this.addShapeToModifier(shapeData);\r\n if (this._isAnimated) {\r\n data.setAsAnimated();\r\n }\r\n }\r\n};\r\nShapeModifier.prototype.init = function (elem, data) {\r\n this.shapes = [];\r\n this.elem = elem;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, data);\r\n this.frameId = initialDefaultFrame;\r\n this.closed = false;\r\n this.k = false;\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\nShapeModifier.prototype.processKeys = function () {\r\n if (this.elem.globalData.frameId === this.frameId) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], ShapeModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, segmentsLengthPool, bez, shapePool, ShapeModifiers */\r\n\r\nfunction TrimModifier() {\r\n}\r\nextendPrototype([ShapeModifier], TrimModifier);\r\nTrimModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\r\n this.sValue = 0;\r\n this.eValue = 0;\r\n this.getValue = this.processKeys;\r\n this.m = data.m;\r\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\r\n};\r\n\r\nTrimModifier.prototype.addShapeToModifier = function (shapeData) {\r\n shapeData.pathsData = [];\r\n};\r\n\r\nTrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\r\n var segments = [];\r\n if (e <= 1) {\r\n segments.push({\r\n s: s,\r\n e: e,\r\n });\r\n } else if (s >= 1) {\r\n segments.push({\r\n s: s - 1,\r\n e: e - 1,\r\n });\r\n } else {\r\n segments.push({\r\n s: s,\r\n e: 1,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: e - 1,\r\n });\r\n }\r\n var shapeSegments = [];\r\n var i;\r\n var len = segments.length;\r\n var segmentOb;\r\n for (i = 0; i < len; i += 1) {\r\n segmentOb = segments[i];\r\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\r\n var shapeS;\r\n var shapeE;\r\n if (segmentOb.s * totalModifierLength <= addedLength) {\r\n shapeS = 0;\r\n } else {\r\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\r\n }\r\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\r\n shapeE = 1;\r\n } else {\r\n shapeE = ((segmentOb.e * totalModifierLength - addedLength) / shapeLength);\r\n }\r\n shapeSegments.push([shapeS, shapeE]);\r\n }\r\n }\r\n if (!shapeSegments.length) {\r\n shapeSegments.push([0, 0]);\r\n }\r\n return shapeSegments;\r\n};\r\n\r\nTrimModifier.prototype.releasePathsData = function (pathsData) {\r\n var i;\r\n var len = pathsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n segmentsLengthPool.release(pathsData[i]);\r\n }\r\n pathsData.length = 0;\r\n return pathsData;\r\n};\r\n\r\nTrimModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var s;\r\n var e;\r\n if (this._mdf || _isFirstFrame) {\r\n var o = (this.o.v % 360) / 360;\r\n if (o < 0) {\r\n o += 1;\r\n }\r\n if (this.s.v > 1) {\r\n s = 1 + o;\r\n } else if (this.s.v < 0) {\r\n s = 0 + o;\r\n } else {\r\n s = this.s.v + o;\r\n }\r\n if (this.e.v > 1) {\r\n e = 1 + o;\r\n } else if (this.e.v < 0) {\r\n e = 0 + o;\r\n } else {\r\n e = this.e.v + o;\r\n }\r\n\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n s = Math.round(s * 10000) * 0.0001;\r\n e = Math.round(e * 10000) * 0.0001;\r\n this.sValue = s;\r\n this.eValue = e;\r\n } else {\r\n s = this.sValue;\r\n e = this.eValue;\r\n }\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var pathsData;\r\n var pathData;\r\n var totalShapeLength;\r\n var totalModifierLength = 0;\r\n\r\n if (e === s) {\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].localShapeCollection.releaseShapes();\r\n this.shapes[i].shape._mdf = true;\r\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\r\n if (this._mdf) {\r\n this.shapes[i].pathsData.length = 0;\r\n }\r\n }\r\n } else if (!((e === 1 && s === 0) || (e === 0 && s === 1))) {\r\n var segments = [];\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\r\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n } else {\r\n shapePaths = shapeData.shape.paths;\r\n jLen = shapePaths._length;\r\n totalShapeLength = 0;\r\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\r\n totalShapeLength = shapeData.totalShapeLength;\r\n } else {\r\n pathsData = this.releasePathsData(shapeData.pathsData);\r\n for (j = 0; j < jLen; j += 1) {\r\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\r\n pathsData.push(pathData);\r\n totalShapeLength += pathData.totalLength;\r\n }\r\n shapeData.totalShapeLength = totalShapeLength;\r\n shapeData.pathsData = pathsData;\r\n }\r\n\r\n totalModifierLength += totalShapeLength;\r\n shapeData.shape._mdf = true;\r\n }\r\n }\r\n var shapeS = s;\r\n var shapeE = e;\r\n var addedLength = 0;\r\n var edges;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shapeData = this.shapes[i];\r\n if (shapeData.shape._mdf) {\r\n localShapeCollection = shapeData.localShapeCollection;\r\n localShapeCollection.releaseShapes();\r\n // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\r\n if (this.m === 2 && len > 1) {\r\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\r\n addedLength += shapeData.totalShapeLength;\r\n } else {\r\n edges = [[shapeS, shapeE]];\r\n }\r\n jLen = edges.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n shapeS = edges[j][0];\r\n shapeE = edges[j][1];\r\n segments.length = 0;\r\n if (shapeE <= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength * shapeE,\r\n });\r\n } else if (shapeS >= 1) {\r\n segments.push({\r\n s: shapeData.totalShapeLength * (shapeS - 1),\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n } else {\r\n segments.push({\r\n s: shapeData.totalShapeLength * shapeS,\r\n e: shapeData.totalShapeLength,\r\n });\r\n segments.push({\r\n s: 0,\r\n e: shapeData.totalShapeLength * (shapeE - 1),\r\n });\r\n }\r\n var newShapesData = this.addShapes(shapeData, segments[0]);\r\n if (segments[0].s !== segments[0].e) {\r\n if (segments.length > 1) {\r\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\r\n if (lastShapeInCollection.c) {\r\n var lastShape = newShapesData.pop();\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\r\n } else {\r\n this.addPaths(newShapesData, localShapeCollection);\r\n newShapesData = this.addShapes(shapeData, segments[1]);\r\n }\r\n }\r\n this.addPaths(newShapesData, localShapeCollection);\r\n }\r\n }\r\n shapeData.shape.paths = localShapeCollection;\r\n }\r\n }\r\n } else if (this._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\r\n // Don't remove this even if it's losing cached info.\r\n this.shapes[i].pathsData.length = 0;\r\n this.shapes[i].shape._mdf = true;\r\n }\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\r\n var i;\r\n var len = newPaths.length;\r\n for (i = 0; i < len; i += 1) {\r\n localShapeCollection.addShape(newPaths[i]);\r\n }\r\n};\r\n\r\nTrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\r\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\r\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\r\n }\r\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\r\n shapePath.setXYAt(points[1], points[5], 'o', pos);\r\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\r\n if (newShape) {\r\n shapePath.setXYAt(points[0], points[4], 'v', pos);\r\n }\r\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\r\n};\r\n\r\nTrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\r\n var pathsData = shapeData.pathsData;\r\n var shapePaths = shapeData.shape.paths.shapes;\r\n var i;\r\n var len = shapeData.shape.paths._length;\r\n var j;\r\n var jLen;\r\n var addedLength = 0;\r\n var currentLengthData;\r\n var segmentCount;\r\n var lengths;\r\n var segment;\r\n var shapes = [];\r\n var initPos;\r\n var newShape = true;\r\n if (!shapePath) {\r\n shapePath = shapePool.newElement();\r\n segmentCount = 0;\r\n initPos = 0;\r\n } else {\r\n segmentCount = shapePath._length;\r\n initPos = shapePath._length;\r\n }\r\n shapes.push(shapePath);\r\n for (i = 0; i < len; i += 1) {\r\n lengths = pathsData[i].lengths;\r\n shapePath.c = shapePaths[i].c;\r\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\r\n for (j = 1; j < jLen; j += 1) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\r\n addedLength += currentLengthData.addedLength;\r\n shapePath.c = false;\r\n } else if (addedLength > shapeSegment.e) {\r\n shapePath.c = false;\r\n break;\r\n } else {\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n }\r\n if (shapePaths[i].c && lengths.length) {\r\n currentLengthData = lengths[j - 1];\r\n if (addedLength <= shapeSegment.e) {\r\n var segmentLength = lengths[j - 1].addedLength;\r\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\r\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\r\n newShape = false;\r\n } else {\r\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\r\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\r\n // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\r\n newShape = false;\r\n shapePath.c = false;\r\n }\r\n } else {\r\n shapePath.c = false;\r\n }\r\n addedLength += currentLengthData.addedLength;\r\n segmentCount += 1;\r\n }\r\n if (shapePath._length) {\r\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\r\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\r\n }\r\n if (addedLength > shapeSegment.e) {\r\n break;\r\n }\r\n if (i < len - 1) {\r\n shapePath = shapePool.newElement();\r\n newShape = true;\r\n shapes.push(shapePath);\r\n segmentCount = 0;\r\n }\r\n }\r\n return shapes;\r\n};\r\n\r\nShapeModifiers.registerModifier('tm', TrimModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, roundCorner, ShapeModifiers */\r\n\r\nfunction RoundCornersModifier() {}\r\nextendPrototype([ShapeModifier], RoundCornersModifier);\r\nRoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\r\n this._isAnimated = !!this.rd.effectsSequence.length;\r\n};\r\n\r\nRoundCornersModifier.prototype.processPath = function (path, round) {\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var i;\r\n var len = path._length;\r\n var currentV;\r\n var currentI;\r\n var currentO;\r\n var closerV;\r\n var distance;\r\n var newPosPerc;\r\n var index = 0;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < len; i += 1) {\r\n currentV = path.v[i];\r\n currentO = path.o[i];\r\n currentI = path.i[i];\r\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\r\n if ((i === 0 || i === len - 1) && !path.c) {\r\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\r\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\r\n index += 1;\r\n } else {\r\n if (i === 0) {\r\n closerV = path.v[len - 1];\r\n } else {\r\n closerV = path.v[i - 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = iX;\r\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\r\n vY = iY;\r\n oX = vX - (vX - currentV[0]) * roundCorner;\r\n oY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n\r\n if (i === len - 1) {\r\n closerV = path.v[0];\r\n } else {\r\n closerV = path.v[i + 1];\r\n }\r\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\r\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\r\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\r\n vX = oX;\r\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\r\n vY = oY;\r\n iX = vX - (vX - currentV[0]) * roundCorner;\r\n iY = vY - (vY - currentV[1]) * roundCorner;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\r\n index += 1;\r\n }\r\n } else {\r\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\r\n index += 1;\r\n }\r\n }\r\n return clonedPath;\r\n};\r\n\r\nRoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var rd = this.rd.v;\r\n\r\n if (rd !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\n\r\nShapeModifiers.registerModifier('rd', RoundCornersModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, PropertyFactory, shapePool, ShapeModifiers */\r\n\r\nfunction PuckerAndBloatModifier() {}\r\nextendPrototype([ShapeModifier], PuckerAndBloatModifier);\r\nPuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\r\n this._isAnimated = !!this.amount.effectsSequence.length;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processPath = function (path, amount) {\r\n var percent = amount / 100;\r\n var centerPoint = [0, 0];\r\n var pathLength = path._length;\r\n var i = 0;\r\n for (i = 0; i < pathLength; i += 1) {\r\n centerPoint[0] += path.v[i][0];\r\n centerPoint[1] += path.v[i][1];\r\n }\r\n centerPoint[0] /= pathLength;\r\n centerPoint[1] /= pathLength;\r\n var clonedPath = shapePool.newElement();\r\n clonedPath.c = path.c;\r\n var vX;\r\n var vY;\r\n var oX;\r\n var oY;\r\n var iX;\r\n var iY;\r\n for (i = 0; i < pathLength; i += 1) {\r\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\r\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\r\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\r\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\r\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\r\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\r\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\r\n }\r\n return clonedPath;\r\n};\r\n\r\nPuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var shapePaths;\r\n var i;\r\n var len = this.shapes.length;\r\n var j;\r\n var jLen;\r\n var amount = this.amount.v;\r\n\r\n if (amount !== 0) {\r\n var shapeData;\r\n var localShapeCollection;\r\n for (i = 0; i < len; i += 1) {\r\n shapeData = this.shapes[i];\r\n localShapeCollection = shapeData.localShapeCollection;\r\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\r\n localShapeCollection.releaseShapes();\r\n shapeData.shape._mdf = true;\r\n shapePaths = shapeData.shape.paths.shapes;\r\n jLen = shapeData.shape.paths._length;\r\n for (j = 0; j < jLen; j += 1) {\r\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\r\n }\r\n }\r\n shapeData.shape.paths = shapeData.localShapeCollection;\r\n }\r\n }\r\n if (!this.dynamicProperties.length) {\r\n this._mdf = false;\r\n }\r\n};\r\nShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\r\n\r\n/* global extendPrototype, ShapeModifier, TransformPropertyFactory, PropertyFactory, Matrix, ShapeModifiers */\r\n\r\nfunction RepeaterModifier() {}\r\nextendPrototype([ShapeModifier], RepeaterModifier);\r\n\r\nRepeaterModifier.prototype.initModifierProperties = function (elem, data) {\r\n this.getValue = this.processKeys;\r\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\r\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\r\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\r\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\r\n this.data = data;\r\n if (!this.dynamicProperties.length) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = !!this.dynamicProperties.length;\r\n this.pMatrix = new Matrix();\r\n this.rMatrix = new Matrix();\r\n this.sMatrix = new Matrix();\r\n this.tMatrix = new Matrix();\r\n this.matrix = new Matrix();\r\n};\r\n\r\nRepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\r\n var dir = inv ? -1 : 1;\r\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\r\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\r\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\r\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n rMatrix.rotate(-transform.r.v * dir * perc);\r\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\r\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\r\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\r\n};\r\n\r\nRepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\r\n this.elem = elem;\r\n this.arr = arr;\r\n this.pos = pos;\r\n this.elemsData = elemsData;\r\n this._currentCopies = 0;\r\n this._elements = [];\r\n this._groups = [];\r\n this.frameId = -1;\r\n this.initDynamicPropertyContainer(elem);\r\n this.initModifierProperties(elem, arr[pos]);\r\n while (pos > 0) {\r\n pos -= 1;\r\n // this._elements.unshift(arr.splice(pos,1)[0]);\r\n this._elements.unshift(arr[pos]);\r\n }\r\n if (this.dynamicProperties.length) {\r\n this.k = true;\r\n } else {\r\n this.getValue(true);\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.resetElements = function (elements) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._processed = false;\r\n if (elements[i].ty === 'gr') {\r\n this.resetElements(elements[i].it);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.cloneElements = function (elements) {\r\n var newElements = JSON.parse(JSON.stringify(elements));\r\n this.resetElements(newElements);\r\n return newElements;\r\n};\r\n\r\nRepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\r\n var i;\r\n var len = elements.length;\r\n for (i = 0; i < len; i += 1) {\r\n elements[i]._render = renderFlag;\r\n if (elements[i].ty === 'gr') {\r\n this.changeGroupRender(elements[i].it, renderFlag);\r\n }\r\n }\r\n};\r\n\r\nRepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\r\n var items;\r\n var itemsTransform;\r\n var i;\r\n var dir;\r\n var cont;\r\n var hasReloaded = false;\r\n if (this._mdf || _isFirstFrame) {\r\n var copies = Math.ceil(this.c.v);\r\n if (this._groups.length < copies) {\r\n while (this._groups.length < copies) {\r\n var group = {\r\n it: this.cloneElements(this._elements),\r\n ty: 'gr',\r\n };\r\n group.it.push({\r\n a: { a: 0, ix: 1, k: [0, 0] }, nm: 'Transform', o: { a: 0, ix: 7, k: 100 }, p: { a: 0, ix: 2, k: [0, 0] }, r: { a: 1, ix: 6, k: [{ s: 0, e: 0, t: 0 }, { s: 0, e: 0, t: 1 }] }, s: { a: 0, ix: 3, k: [100, 100] }, sa: { a: 0, ix: 5, k: 0 }, sk: { a: 0, ix: 4, k: 0 }, ty: 'tr',\r\n });\r\n\r\n this.arr.splice(0, 0, group);\r\n this._groups.splice(0, 0, group);\r\n this._currentCopies += 1;\r\n }\r\n this.elem.reloadShapes();\r\n hasReloaded = true;\r\n }\r\n cont = 0;\r\n var renderFlag;\r\n for (i = 0; i <= this._groups.length - 1; i += 1) {\r\n renderFlag = cont < copies;\r\n this._groups[i]._render = renderFlag;\r\n this.changeGroupRender(this._groups[i].it, renderFlag);\r\n if (!renderFlag) {\r\n var elems = this.elemsData[i].it;\r\n var transformData = elems[elems.length - 1];\r\n if (transformData.transform.op.v !== 0) {\r\n transformData.transform.op._mdf = true;\r\n transformData.transform.op.v = 0;\r\n } else {\r\n transformData.transform.op._mdf = false;\r\n }\r\n }\r\n cont += 1;\r\n }\r\n\r\n this._currentCopies = copies;\r\n /// /\r\n\r\n var offset = this.o.v;\r\n var offsetModulo = offset % 1;\r\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\r\n var pProps = this.pMatrix.props;\r\n var rProps = this.rMatrix.props;\r\n var sProps = this.sMatrix.props;\r\n this.pMatrix.reset();\r\n this.rMatrix.reset();\r\n this.sMatrix.reset();\r\n this.tMatrix.reset();\r\n this.matrix.reset();\r\n var iteration = 0;\r\n\r\n if (offset > 0) {\r\n while (iteration < roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n iteration += 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\r\n iteration += offsetModulo;\r\n }\r\n } else if (offset < 0) {\r\n while (iteration > roundOffset) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\r\n iteration -= 1;\r\n }\r\n if (offsetModulo) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\r\n iteration -= offsetModulo;\r\n }\r\n }\r\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\r\n dir = this.data.m === 1 ? 1 : -1;\r\n cont = this._currentCopies;\r\n var j;\r\n var jLen;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n jLen = itemsTransform.length;\r\n items[items.length - 1].transform.mProps._mdf = true;\r\n items[items.length - 1].transform.op._mdf = true;\r\n items[items.length - 1].transform.op.v = this._currentCopies === 1\r\n ? this.so.v\r\n : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\r\n\r\n if (iteration !== 0) {\r\n if ((i !== 0 && dir === 1) || (i !== this._currentCopies - 1 && dir === -1)) {\r\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\r\n }\r\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\r\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\r\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n this.matrix.reset();\r\n } else {\r\n this.matrix.reset();\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsTransform[j] = this.matrix.props[j];\r\n }\r\n }\r\n iteration += 1;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n } else {\r\n cont = this._currentCopies;\r\n i = 0;\r\n dir = 1;\r\n while (cont) {\r\n items = this.elemsData[i].it;\r\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\r\n items[items.length - 1].transform.mProps._mdf = false;\r\n items[items.length - 1].transform.op._mdf = false;\r\n cont -= 1;\r\n i += dir;\r\n }\r\n }\r\n return hasReloaded;\r\n};\r\n\r\nRepeaterModifier.prototype.addShape = function () {};\r\n\r\nShapeModifiers.registerModifier('rp', RepeaterModifier);\r\n\r\n/* global createSizedArray, shapePool */\r\n\r\nfunction ShapeCollection() {\r\n this._length = 0;\r\n this._maxLength = 4;\r\n this.shapes = createSizedArray(this._maxLength);\r\n}\r\n\r\nShapeCollection.prototype.addShape = function (shapeData) {\r\n if (this._length === this._maxLength) {\r\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\r\n this._maxLength *= 2;\r\n }\r\n this.shapes[this._length] = shapeData;\r\n this._length += 1;\r\n};\r\n\r\nShapeCollection.prototype.releaseShapes = function () {\r\n var i;\r\n for (i = 0; i < this._length; i += 1) {\r\n shapePool.release(this.shapes[i]);\r\n }\r\n this._length = 0;\r\n};\r\n\r\n/* global createSizedArray, createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction DashProperty(elem, data, renderer, container) {\r\n this.elem = elem;\r\n this.frameId = -1;\r\n this.dataProps = createSizedArray(data.length);\r\n this.renderer = renderer;\r\n this.k = false;\r\n this.dashStr = '';\r\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\r\n this.dashoffset = createTypedArray('float32', 1);\r\n this.initDynamicPropertyContainer(container);\r\n var i;\r\n var len = data.length || 0;\r\n var prop;\r\n for (i = 0; i < len; i += 1) {\r\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\r\n this.k = prop.k || this.k;\r\n this.dataProps[i] = { n: data[i].n, p: prop };\r\n }\r\n if (!this.k) {\r\n this.getValue(true);\r\n }\r\n this._isAnimated = this.k;\r\n}\r\n\r\nDashProperty.prototype.getValue = function (forceRender) {\r\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\r\n return;\r\n }\r\n this.frameId = this.elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n this._mdf = this._mdf || forceRender;\r\n if (this._mdf) {\r\n var i = 0;\r\n var len = this.dataProps.length;\r\n if (this.renderer === 'svg') {\r\n this.dashStr = '';\r\n }\r\n for (i = 0; i < len; i += 1) {\r\n if (this.dataProps[i].n !== 'o') {\r\n if (this.renderer === 'svg') {\r\n this.dashStr += ' ' + this.dataProps[i].p.v;\r\n } else {\r\n this.dashArray[i] = this.dataProps[i].p.v;\r\n }\r\n } else {\r\n this.dashoffset[0] = this.dataProps[i].p.v;\r\n }\r\n }\r\n }\r\n};\r\nextendPrototype([DynamicPropertyContainer], DashProperty);\r\n\r\n/* global createTypedArray, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\nfunction GradientProperty(elem, data, container) {\r\n this.data = data;\r\n this.c = createTypedArray('uint8c', data.p * 4);\r\n var cLength = data.k.k[0].s ? (data.k.k[0].s.length - data.p * 4) : data.k.k.length - data.p * 4;\r\n this.o = createTypedArray('float32', cLength);\r\n this._cmdf = false;\r\n this._omdf = false;\r\n this._collapsable = this.checkCollapsable();\r\n this._hasOpacity = cLength;\r\n this.initDynamicPropertyContainer(container);\r\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\r\n this.k = this.prop.k;\r\n this.getValue(true);\r\n}\r\n\r\nGradientProperty.prototype.comparePoints = function (values, points) {\r\n var i = 0;\r\n var len = this.o.length / 2;\r\n var diff;\r\n while (i < len) {\r\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\r\n if (diff > 0.01) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.checkCollapsable = function () {\r\n if (this.o.length / 2 !== this.c.length / 4) {\r\n return false;\r\n }\r\n if (this.data.k.k[0].s) {\r\n var i = 0;\r\n var len = this.data.k.k.length;\r\n while (i < len) {\r\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\r\n return false;\r\n }\r\n i += 1;\r\n }\r\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nGradientProperty.prototype.getValue = function (forceRender) {\r\n this.prop.getValue();\r\n this._mdf = false;\r\n this._cmdf = false;\r\n this._omdf = false;\r\n if (this.prop._mdf || forceRender) {\r\n var i;\r\n var len = this.data.p * 4;\r\n var mult;\r\n var val;\r\n for (i = 0; i < len; i += 1) {\r\n mult = i % 4 === 0 ? 100 : 255;\r\n val = Math.round(this.prop.v[i] * mult);\r\n if (this.c[i] !== val) {\r\n this.c[i] = val;\r\n this._cmdf = !forceRender;\r\n }\r\n }\r\n if (this.o.length) {\r\n len = this.prop.v.length;\r\n for (i = this.data.p * 4; i < len; i += 1) {\r\n mult = i % 2 === 0 ? 100 : 1;\r\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\r\n if (this.o[i - this.data.p * 4] !== val) {\r\n this.o[i - this.data.p * 4] = val;\r\n this._omdf = !forceRender;\r\n }\r\n }\r\n }\r\n this._mdf = !forceRender;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], GradientProperty);\r\n\r\n/* exported buildShapeString */\r\n\r\nvar buildShapeString = function (pathNodes, length, closed, mat) {\r\n if (length === 0) {\r\n return '';\r\n }\r\n var _o = pathNodes.o;\r\n var _i = pathNodes.i;\r\n var _v = pathNodes.v;\r\n var i;\r\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n for (i = 1; i < length; i += 1) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\r\n }\r\n if (closed && length) {\r\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\r\n shapeString += 'z';\r\n }\r\n return shapeString;\r\n};\r\n\r\n/* global Howl */\r\n/* exported audioControllerFactory */\r\n\r\nvar audioControllerFactory = (function () {\r\n function AudioController(audioFactory) {\r\n this.audios = [];\r\n this.audioFactory = audioFactory;\r\n this._volume = 1;\r\n this._isMuted = false;\r\n }\r\n\r\n AudioController.prototype = {\r\n addAudio: function (audio) {\r\n this.audios.push(audio);\r\n },\r\n pause: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].pause();\r\n }\r\n },\r\n resume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].resume();\r\n }\r\n },\r\n setRate: function (rateValue) {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].setRate(rateValue);\r\n }\r\n },\r\n createAudio: function (assetPath) {\r\n if (this.audioFactory) {\r\n return this.audioFactory(assetPath);\r\n } if (Howl) {\r\n return new Howl({\r\n src: [assetPath],\r\n });\r\n }\r\n return {\r\n isPlaying: false,\r\n play: function () { this.isPlaying = true; },\r\n seek: function () { this.isPlaying = false; },\r\n playing: function () {},\r\n rate: function () {},\r\n setVolume: function () {},\r\n };\r\n },\r\n setAudioFactory: function (audioFactory) {\r\n this.audioFactory = audioFactory;\r\n },\r\n setVolume: function (value) {\r\n this._volume = value;\r\n this._updateVolume();\r\n },\r\n mute: function () {\r\n this._isMuted = true;\r\n this._updateVolume();\r\n },\r\n unmute: function () {\r\n this._isMuted = false;\r\n this._updateVolume();\r\n },\r\n getVolume: function () {\r\n return this._volume;\r\n },\r\n _updateVolume: function () {\r\n var i;\r\n var len = this.audios.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\r\n }\r\n },\r\n };\r\n\r\n return function () {\r\n return new AudioController();\r\n };\r\n}());\r\n\r\n/* global createTag, createNS, isSafari, assetLoader */\r\n/* exported ImagePreloader */\r\n\r\nvar ImagePreloader = (function () {\r\n var proxyImage = (function () {\r\n var canvas = createTag('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = 'rgba(0,0,0,0)';\r\n ctx.fillRect(0, 0, 1, 1);\r\n return canvas;\r\n }());\r\n\r\n function imageLoaded() {\r\n this.loadedAssets += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n function footageLoaded() {\r\n this.loadedFootagesCount += 1;\r\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\r\n if (this.imagesLoadedCb) {\r\n this.imagesLoadedCb(null);\r\n }\r\n }\r\n }\r\n\r\n function getAssetsPath(assetData, assetsPath, originalPath) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = assetsPath + imagePath;\r\n } else {\r\n path = originalPath;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n }\r\n\r\n function testImageLoaded(img) {\r\n var _count = 0;\r\n var intervalId = setInterval(function () {\r\n var box = img.getBBox();\r\n if (box.width || _count > 500) {\r\n this._imageLoaded();\r\n clearInterval(intervalId);\r\n }\r\n _count += 1;\r\n }.bind(this), 50);\r\n }\r\n\r\n function createImageData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createNS('image');\r\n if (isSafari) {\r\n this.testImageLoaded(img);\r\n } else {\r\n img.addEventListener('load', this._imageLoaded, false);\r\n }\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\r\n if (this._elementHelper.append) {\r\n this._elementHelper.append(img);\r\n } else {\r\n this._elementHelper.appendChild(img);\r\n }\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createImgData(assetData) {\r\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\r\n var img = createTag('img');\r\n img.crossOrigin = 'anonymous';\r\n img.addEventListener('load', this._imageLoaded, false);\r\n img.addEventListener('error', function () {\r\n ob.img = proxyImage;\r\n this._imageLoaded();\r\n }.bind(this), false);\r\n img.src = path;\r\n var ob = {\r\n img: img,\r\n assetData: assetData,\r\n };\r\n return ob;\r\n }\r\n\r\n function createFootageData(data) {\r\n var ob = {\r\n assetData: data,\r\n };\r\n var path = getAssetsPath(data, this.assetsPath, this.path);\r\n assetLoader.load(path, function (footageData) {\r\n ob.img = footageData;\r\n this._footageLoaded();\r\n }.bind(this), function () {\r\n ob.img = {};\r\n this._footageLoaded();\r\n }.bind(this));\r\n return ob;\r\n }\r\n\r\n function loadAssets(assets, cb) {\r\n this.imagesLoadedCb = cb;\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!assets[i].layers) {\r\n if (!assets[i].t) {\r\n this.totalImages += 1;\r\n this.images.push(this._createImageData(assets[i]));\r\n } else if (assets[i].t === 3) {\r\n this.totalFootages += 1;\r\n this.images.push(this.createFootageData(assets[i]));\r\n }\r\n }\r\n }\r\n }\r\n\r\n function setPath(path) {\r\n this.path = path || '';\r\n }\r\n\r\n function setAssetsPath(path) {\r\n this.assetsPath = path || '';\r\n }\r\n\r\n function getAsset(assetData) {\r\n var i = 0;\r\n var len = this.images.length;\r\n while (i < len) {\r\n if (this.images[i].assetData === assetData) {\r\n return this.images[i].img;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n function destroy() {\r\n this.imagesLoadedCb = null;\r\n this.images.length = 0;\r\n }\r\n\r\n function loadedImages() {\r\n return this.totalImages === this.loadedAssets;\r\n }\r\n\r\n function loadedFootages() {\r\n return this.totalFootages === this.loadedFootagesCount;\r\n }\r\n\r\n function setCacheType(type, elementHelper) {\r\n if (type === 'svg') {\r\n this._elementHelper = elementHelper;\r\n this._createImageData = this.createImageData.bind(this);\r\n } else {\r\n this._createImageData = this.createImgData.bind(this);\r\n }\r\n }\r\n\r\n function ImagePreloaderFactory() {\r\n this._imageLoaded = imageLoaded.bind(this);\r\n this._footageLoaded = footageLoaded.bind(this);\r\n this.testImageLoaded = testImageLoaded.bind(this);\r\n this.createFootageData = createFootageData.bind(this);\r\n this.assetsPath = '';\r\n this.path = '';\r\n this.totalImages = 0;\r\n this.totalFootages = 0;\r\n this.loadedAssets = 0;\r\n this.loadedFootagesCount = 0;\r\n this.imagesLoadedCb = null;\r\n this.images = [];\r\n }\r\n\r\n ImagePreloaderFactory.prototype = {\r\n loadAssets: loadAssets,\r\n setAssetsPath: setAssetsPath,\r\n setPath: setPath,\r\n loadedImages: loadedImages,\r\n loadedFootages: loadedFootages,\r\n destroy: destroy,\r\n getAsset: getAsset,\r\n createImgData: createImgData,\r\n createImageData: createImageData,\r\n imageLoaded: imageLoaded,\r\n footageLoaded: footageLoaded,\r\n setCacheType: setCacheType,\r\n };\r\n\r\n return ImagePreloaderFactory;\r\n}());\r\n\r\n/* exported featureSupport */\r\n\r\nvar featureSupport = (function () {\r\n var ob = {\r\n maskType: true,\r\n };\r\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\r\n ob.maskType = false;\r\n }\r\n return ob;\r\n}());\r\n\r\n/* global createNS */\r\n/* exported filtersFactory */\r\n\r\nvar filtersFactory = (function () {\r\n var ob = {};\r\n ob.createFilter = createFilter;\r\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\r\n\r\n function createFilter(filId, skipCoordinates) {\r\n var fil = createNS('filter');\r\n fil.setAttribute('id', filId);\r\n if (skipCoordinates !== true) {\r\n fil.setAttribute('filterUnits', 'objectBoundingBox');\r\n fil.setAttribute('x', '0%');\r\n fil.setAttribute('y', '0%');\r\n fil.setAttribute('width', '100%');\r\n fil.setAttribute('height', '100%');\r\n }\r\n return fil;\r\n }\r\n\r\n function createAlphaToLuminanceFilter() {\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\r\n return feColorMatrix;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* exported assetLoader */\r\n\r\nvar assetLoader = (function () {\r\n function formatResponse(xhr) {\r\n if (xhr.response && typeof xhr.response === 'object') {\r\n return xhr.response;\r\n } if (xhr.response && typeof xhr.response === 'string') {\r\n return JSON.parse(xhr.response);\r\n } if (xhr.responseText) {\r\n return JSON.parse(xhr.responseText);\r\n }\r\n return null;\r\n }\r\n\r\n function loadAsset(path, callback, errorCallback) {\r\n var response;\r\n var xhr = new XMLHttpRequest();\r\n // set responseType after calling open or IE will break.\r\n try {\r\n // This crashes on Android WebView prior to KitKat\r\n xhr.responseType = 'json';\r\n } catch (err) {} // eslint-disable-line no-empty\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } else {\r\n try {\r\n response = formatResponse(xhr);\r\n callback(response);\r\n } catch (err) {\r\n if (errorCallback) {\r\n errorCallback(err);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n xhr.open('GET', path, true);\r\n xhr.send();\r\n }\r\n return {\r\n load: loadAsset,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, PropertyFactory, TextAnimatorDataProperty, bez, addHueToRGB,\r\n addSaturationToRGB, addBrightnessToRGB, LetterProps, Matrix, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction TextAnimatorProperty(textData, renderType, elem) {\r\n this._isFirstFrame = true;\r\n this._hasMaskedPath = false;\r\n this._frameId = -1;\r\n this._textData = textData;\r\n this._renderType = renderType;\r\n this._elem = elem;\r\n this._animatorsData = createSizedArray(this._textData.a.length);\r\n this._pathData = {};\r\n this._moreOptions = {\r\n alignment: {},\r\n };\r\n this.renderedLetters = [];\r\n this.lettersChangedFlag = false;\r\n this.initDynamicPropertyContainer(elem);\r\n}\r\n\r\nTextAnimatorProperty.prototype.searchProperties = function () {\r\n var i;\r\n var len = this._textData.a.length;\r\n var animatorProps;\r\n var getProp = PropertyFactory.getProp;\r\n for (i = 0; i < len; i += 1) {\r\n animatorProps = this._textData.a[i];\r\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\r\n }\r\n if (this._textData.p && 'm' in this._textData.p) {\r\n this._pathData = {\r\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\r\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\r\n r: this._textData.p.r,\r\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m),\r\n };\r\n this._hasMaskedPath = true;\r\n } else {\r\n this._hasMaskedPath = false;\r\n }\r\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\r\n};\r\n\r\nTextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\r\n this.lettersChangedFlag = lettersChangedFlag;\r\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\r\n return;\r\n }\r\n this._isFirstFrame = false;\r\n var alignment = this._moreOptions.alignment.v;\r\n var animators = this._animatorsData;\r\n var textData = this._textData;\r\n var matrixHelper = this.mHelper;\r\n var renderType = this._renderType;\r\n var renderedLettersCount = this.renderedLetters.length;\r\n var xPos;\r\n var yPos;\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var pathInfo;\r\n var currentLength;\r\n var currentPoint;\r\n var segmentLength;\r\n var flag;\r\n var pointInd;\r\n var segmentInd;\r\n var prevPoint;\r\n var points;\r\n var segments;\r\n var partialLength;\r\n var totalLength;\r\n var perc;\r\n var tanAngle;\r\n var mask;\r\n if (this._hasMaskedPath) {\r\n mask = this._pathData.m;\r\n if (!this._pathData.n || this._pathData._mdf) {\r\n var paths = mask.v;\r\n if (this._pathData.r) {\r\n paths = paths.reverse();\r\n }\r\n // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\r\n pathInfo = {\r\n tLength: 0,\r\n segments: [],\r\n };\r\n len = paths._length - 1;\r\n var bezierData;\r\n totalLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[i + 1],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n i = len;\r\n if (mask.v.c) {\r\n bezierData = bez.buildBezierData(paths.v[i],\r\n paths.v[0],\r\n [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]],\r\n [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\r\n pathInfo.tLength += bezierData.segmentLength;\r\n pathInfo.segments.push(bezierData);\r\n totalLength += bezierData.segmentLength;\r\n }\r\n this._pathData.pi = pathInfo;\r\n }\r\n pathInfo = this._pathData.pi;\r\n\r\n currentLength = this._pathData.f.v;\r\n segmentInd = 0;\r\n pointInd = 1;\r\n segmentLength = 0;\r\n flag = true;\r\n segments = pathInfo.segments;\r\n if (currentLength < 0 && mask.v.c) {\r\n if (pathInfo.tLength < Math.abs(currentLength)) {\r\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\r\n }\r\n segmentInd = segments.length - 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n while (currentLength < 0) {\r\n currentLength += points[pointInd].partialLength;\r\n pointInd -= 1;\r\n if (pointInd < 0) {\r\n segmentInd -= 1;\r\n points = segments[segmentInd].points;\r\n pointInd = points.length - 1;\r\n }\r\n }\r\n }\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n\r\n len = letters.length;\r\n xPos = 0;\r\n yPos = 0;\r\n var yOff = documentData.finalSize * 1.2 * 0.714;\r\n var firstLine = true;\r\n var animatorProps;\r\n var animatorSelector;\r\n var j;\r\n var jLen;\r\n var letterValue;\r\n\r\n jLen = animators.length;\r\n\r\n var mult;\r\n var ind = -1;\r\n var offf;\r\n var xPathPos;\r\n var yPathPos;\r\n var initPathPos = currentLength;\r\n var initSegmentInd = segmentInd;\r\n var initPointInd = pointInd;\r\n var currentLine = -1;\r\n var elemOpacity;\r\n var sc;\r\n var sw;\r\n var fc;\r\n var k;\r\n var letterSw;\r\n var letterSc;\r\n var letterFc;\r\n var letterM = '';\r\n var letterP = this.defaultPropsArray;\r\n var letterO;\r\n\r\n //\r\n if (documentData.j === 2 || documentData.j === 1) {\r\n var animatorJustifyOffset = 0;\r\n var animatorFirstCharOffset = 0;\r\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\r\n var lastIndex = 0;\r\n var isNewLine = true;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n animatorJustifyOffset = 0;\r\n isNewLine = true;\r\n } else {\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n if (isNewLine && documentData.j === 2) {\r\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\r\n }\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\r\n } else {\r\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\r\n }\r\n }\r\n }\r\n isNewLine = false;\r\n }\r\n }\r\n if (animatorJustifyOffset) {\r\n animatorJustifyOffset += animatorFirstCharOffset;\r\n }\r\n while (lastIndex < i) {\r\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\r\n lastIndex += 1;\r\n }\r\n }\r\n //\r\n\r\n for (i = 0; i < len; i += 1) {\r\n matrixHelper.reset();\r\n elemOpacity = 1;\r\n if (letters[i].n) {\r\n xPos = 0;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n currentLength = initPathPos;\r\n firstLine = false;\r\n if (this._hasMaskedPath) {\r\n segmentInd = initSegmentInd;\r\n pointInd = initPointInd;\r\n points = segments[segmentInd].points;\r\n prevPoint = points[pointInd - 1];\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n segmentLength = 0;\r\n }\r\n letterM = '';\r\n letterFc = '';\r\n letterSw = '';\r\n letterO = '';\r\n letterP = this.defaultPropsArray;\r\n } else {\r\n if (this._hasMaskedPath) {\r\n if (currentLine !== letters[i].line) {\r\n switch (documentData.j) {\r\n case 1:\r\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\r\n break;\r\n case 2:\r\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\r\n break;\r\n default:\r\n break;\r\n }\r\n currentLine = letters[i].line;\r\n }\r\n if (ind !== letters[i].ind) {\r\n if (letters[ind]) {\r\n currentLength += letters[ind].extra;\r\n }\r\n currentLength += letters[i].an / 2;\r\n ind = letters[i].ind;\r\n }\r\n currentLength += (alignment[0] * letters[i].an) * 0.005;\r\n var animatorOffset = 0;\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.p.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.p.v[0] * mult;\r\n }\r\n }\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n animatorOffset += animatorProps.a.v[0] * mult[0];\r\n } else {\r\n animatorOffset += animatorProps.a.v[0] * mult;\r\n }\r\n }\r\n }\r\n flag = true;\r\n while (flag) {\r\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\r\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\r\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\r\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, -(alignment[1] * yOff) * 0.01);\r\n flag = false;\r\n } else if (points) {\r\n segmentLength += currentPoint.partialLength;\r\n pointInd += 1;\r\n if (pointInd >= points.length) {\r\n pointInd = 0;\r\n segmentInd += 1;\r\n if (!segments[segmentInd]) {\r\n if (mask.v.c) {\r\n pointInd = 0;\r\n segmentInd = 0;\r\n points = segments[segmentInd].points;\r\n } else {\r\n segmentLength -= currentPoint.partialLength;\r\n points = null;\r\n }\r\n } else {\r\n points = segments[segmentInd].points;\r\n }\r\n }\r\n if (points) {\r\n prevPoint = currentPoint;\r\n currentPoint = points[pointInd];\r\n partialLength = currentPoint.partialLength;\r\n }\r\n }\r\n }\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n } else {\r\n offf = letters[i].an / 2 - letters[i].add;\r\n matrixHelper.translate(-offf, 0, 0);\r\n\r\n // Grouping alignment\r\n matrixHelper.translate((-alignment[0] * letters[i].an) * 0.005, (-alignment[1] * yOff) * 0.01, 0);\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.t.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\r\n if (xPos !== 0 || documentData.j !== 0) {\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n currentLength += animatorProps.t.v * mult[0];\r\n } else {\r\n currentLength += animatorProps.t.v * mult;\r\n }\r\n } else if (mult.length) {\r\n xPos += animatorProps.t.v * mult[0];\r\n } else {\r\n xPos += animatorProps.t.v * mult;\r\n }\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n sw = documentData.sw || 0;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n if (documentData.sc) {\r\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\r\n } else {\r\n sc = [0, 0, 0];\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.a.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n\r\n if (mult.length) {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n if (animatorProps.s.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (mult.length) {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult[0]), 1 + ((animatorProps.s.v[1] - 1) * mult[1]), 1);\r\n } else {\r\n matrixHelper.scale(1 + ((animatorProps.s.v[0] - 1) * mult), 1 + ((animatorProps.s.v[1] - 1) * mult), 1);\r\n }\r\n }\r\n }\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (animatorProps.sk.propType) {\r\n if (mult.length) {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\r\n } else {\r\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\r\n }\r\n }\r\n if (animatorProps.r.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\r\n } else {\r\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\r\n }\r\n }\r\n if (animatorProps.ry.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\r\n } else {\r\n matrixHelper.rotateY(animatorProps.ry.v * mult);\r\n }\r\n }\r\n if (animatorProps.rx.propType) {\r\n if (mult.length) {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\r\n } else {\r\n matrixHelper.rotateX(animatorProps.rx.v * mult);\r\n }\r\n }\r\n if (animatorProps.o.propType) {\r\n if (mult.length) {\r\n elemOpacity += ((animatorProps.o.v) * mult[0] - elemOpacity) * mult[0];\r\n } else {\r\n elemOpacity += ((animatorProps.o.v) * mult - elemOpacity) * mult;\r\n }\r\n }\r\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\r\n if (mult.length) {\r\n sw += animatorProps.sw.v * mult[0];\r\n } else {\r\n sw += animatorProps.sw.v * mult;\r\n }\r\n }\r\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\r\n } else {\r\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n if (animatorProps.fc.propType) {\r\n for (k = 0; k < 3; k += 1) {\r\n if (mult.length) {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\r\n } else {\r\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\r\n }\r\n }\r\n }\r\n if (animatorProps.fh.propType) {\r\n if (mult.length) {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\r\n } else {\r\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\r\n }\r\n }\r\n if (animatorProps.fs.propType) {\r\n if (mult.length) {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\r\n } else {\r\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\r\n }\r\n }\r\n if (animatorProps.fb.propType) {\r\n if (mult.length) {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\r\n } else {\r\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorProps = animators[j].a;\r\n\r\n if (animatorProps.p.propType) {\r\n animatorSelector = animators[j].s;\r\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\r\n if (this._hasMaskedPath) {\r\n if (mult.length) {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\r\n } else {\r\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n } else if (mult.length) {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\r\n } else {\r\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\r\n }\r\n }\r\n }\r\n if (documentData.strokeWidthAnim) {\r\n letterSw = sw < 0 ? 0 : sw;\r\n }\r\n if (documentData.strokeColorAnim) {\r\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\r\n }\r\n if (documentData.fillColorAnim && documentData.fc) {\r\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\r\n }\r\n\r\n if (this._hasMaskedPath) {\r\n matrixHelper.translate(0, -documentData.ls);\r\n\r\n matrixHelper.translate(0, (alignment[1] * yOff) * 0.01 + yPos, 0);\r\n if (textData.p.p) {\r\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\r\n var rot = (Math.atan(tanAngle) * 180) / Math.PI;\r\n if (currentPoint.point[0] < prevPoint.point[0]) {\r\n rot += 180;\r\n }\r\n matrixHelper.rotate((-rot * Math.PI) / 180);\r\n }\r\n matrixHelper.translate(xPathPos, yPathPos, 0);\r\n currentLength -= (alignment[0] * letters[i].an) * 0.005;\r\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\r\n currentLength += letters[i].an / 2;\r\n currentLength += (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n } else {\r\n matrixHelper.translate(xPos, yPos, 0);\r\n\r\n if (documentData.ps) {\r\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(0, -documentData.ls);\r\n matrixHelper.translate(offf, 0, 0);\r\n matrixHelper.translate((alignment[0] * letters[i].an) * 0.005, (alignment[1] * yOff) * 0.01, 0);\r\n xPos += letters[i].l + (documentData.tr * 0.001) * documentData.finalSize;\r\n }\r\n if (renderType === 'html') {\r\n letterM = matrixHelper.toCSS();\r\n } else if (renderType === 'svg') {\r\n letterM = matrixHelper.to2dCSS();\r\n } else {\r\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\r\n }\r\n letterO = elemOpacity;\r\n }\r\n\r\n if (renderedLettersCount <= i) {\r\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\r\n this.renderedLetters.push(letterValue);\r\n renderedLettersCount += 1;\r\n this.lettersChangedFlag = true;\r\n } else {\r\n letterValue = this.renderedLetters[i];\r\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\r\n }\r\n }\r\n};\r\n\r\nTextAnimatorProperty.prototype.getValue = function () {\r\n if (this._elem.globalData.frameId === this._frameId) {\r\n return;\r\n }\r\n this._frameId = this._elem.globalData.frameId;\r\n this.iterateDynamicProperties();\r\n};\r\n\r\nTextAnimatorProperty.prototype.mHelper = new Matrix();\r\nTextAnimatorProperty.prototype.defaultPropsArray = [];\r\nextendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\r\n\r\n/* global PropertyFactory, degToRads, TextSelectorProp */\r\n/* exported TextAnimatorDataProperty */\r\n\r\nfunction TextAnimatorDataProperty(elem, animatorProps, container) {\r\n var defaultData = { propType: false };\r\n var getProp = PropertyFactory.getProp;\r\n var textAnimatorAnimatables = animatorProps.a;\r\n this.a = {\r\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\r\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\r\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\r\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\r\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\r\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\r\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\r\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\r\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\r\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\r\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\r\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\r\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\r\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\r\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\r\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData,\r\n };\r\n\r\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\r\n this.s.t = animatorProps.s.t;\r\n}\r\n\r\nfunction LetterProps(o, sw, sc, fc, m, p) {\r\n this.o = o;\r\n this.sw = sw;\r\n this.sc = sc;\r\n this.fc = fc;\r\n this.m = m;\r\n this.p = p;\r\n this._mdf = {\r\n o: true,\r\n sw: !!sw,\r\n sc: !!sc,\r\n fc: !!fc,\r\n m: true,\r\n p: true,\r\n };\r\n}\r\n\r\nLetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\r\n this._mdf.o = false;\r\n this._mdf.sw = false;\r\n this._mdf.sc = false;\r\n this._mdf.fc = false;\r\n this._mdf.m = false;\r\n this._mdf.p = false;\r\n var updated = false;\r\n\r\n if (this.o !== o) {\r\n this.o = o;\r\n this._mdf.o = true;\r\n updated = true;\r\n }\r\n if (this.sw !== sw) {\r\n this.sw = sw;\r\n this._mdf.sw = true;\r\n updated = true;\r\n }\r\n if (this.sc !== sc) {\r\n this.sc = sc;\r\n this._mdf.sc = true;\r\n updated = true;\r\n }\r\n if (this.fc !== fc) {\r\n this.fc = fc;\r\n this._mdf.fc = true;\r\n updated = true;\r\n }\r\n if (this.m !== m) {\r\n this.m = m;\r\n this._mdf.m = true;\r\n updated = true;\r\n }\r\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\r\n this.p = p;\r\n this._mdf.p = true;\r\n updated = true;\r\n }\r\n return updated;\r\n};\r\n\r\n/* global FontManager, initialDefaultFrame, getFontProperties */\r\n/* exported TextProperty */\r\n\r\nfunction TextProperty(elem, data) {\r\n this._frameId = initialDefaultFrame;\r\n this.pv = '';\r\n this.v = '';\r\n this.kf = false;\r\n this._isFirstFrame = true;\r\n this._mdf = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = this.elem.comp;\r\n this.keysIndex = 0;\r\n this.canResize = false;\r\n this.minimumFontSize = 1;\r\n this.effectsSequence = [];\r\n this.currentData = {\r\n ascent: 0,\r\n boxWidth: this.defaultBoxWidth,\r\n f: '',\r\n fStyle: '',\r\n fWeight: '',\r\n fc: '',\r\n j: '',\r\n justifyOffset: '',\r\n l: [],\r\n lh: 0,\r\n lineWidths: [],\r\n ls: '',\r\n of: '',\r\n s: '',\r\n sc: '',\r\n sw: 0,\r\n t: 0,\r\n tr: 0,\r\n sz: 0,\r\n ps: null,\r\n fillColorAnim: false,\r\n strokeColorAnim: false,\r\n strokeWidthAnim: false,\r\n yOffset: 0,\r\n finalSize: 0,\r\n finalText: [],\r\n finalLineHeight: 0,\r\n __complete: false,\r\n\r\n };\r\n this.copyData(this.currentData, this.data.d.k[0].s);\r\n\r\n if (!this.searchProperty()) {\r\n this.completeTextData(this.currentData);\r\n }\r\n}\r\n\r\nTextProperty.prototype.defaultBoxWidth = [0, 0];\r\n\r\nTextProperty.prototype.copyData = function (obj, data) {\r\n for (var s in data) {\r\n if (Object.prototype.hasOwnProperty.call(data, s)) {\r\n obj[s] = data[s];\r\n }\r\n }\r\n return obj;\r\n};\r\n\r\nTextProperty.prototype.setCurrentData = function (data) {\r\n if (!data.__complete) {\r\n this.completeTextData(data);\r\n }\r\n this.currentData = data;\r\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\r\n this._mdf = true;\r\n};\r\n\r\nTextProperty.prototype.searchProperty = function () {\r\n return this.searchKeyframes();\r\n};\r\n\r\nTextProperty.prototype.searchKeyframes = function () {\r\n this.kf = this.data.d.k.length > 1;\r\n if (this.kf) {\r\n this.addEffect(this.getKeyframeValue.bind(this));\r\n }\r\n return this.kf;\r\n};\r\n\r\nTextProperty.prototype.addEffect = function (effectFunction) {\r\n this.effectsSequence.push(effectFunction);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.getValue = function (_finalValue) {\r\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\r\n return;\r\n }\r\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\r\n var currentValue = this.currentData;\r\n var currentIndex = this.keysIndex;\r\n if (this.lock) {\r\n this.setCurrentData(this.currentData);\r\n return;\r\n }\r\n this.lock = true;\r\n this._mdf = false;\r\n var i; var\r\n len = this.effectsSequence.length;\r\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\r\n for (i = 0; i < len; i += 1) {\r\n // Checking if index changed to prevent creating a new object every time the expression updates.\r\n if (currentIndex !== this.keysIndex) {\r\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\r\n } else {\r\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\r\n }\r\n }\r\n if (currentValue !== finalValue) {\r\n this.setCurrentData(finalValue);\r\n }\r\n this.v = this.currentData;\r\n this.pv = this.v;\r\n this.lock = false;\r\n this.frameId = this.elem.globalData.frameId;\r\n};\r\n\r\nTextProperty.prototype.getKeyframeValue = function () {\r\n var textKeys = this.data.d.k;\r\n var frameNum = this.elem.comp.renderedFrame;\r\n var i = 0; var\r\n len = textKeys.length;\r\n while (i <= len - 1) {\r\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (this.keysIndex !== i) {\r\n this.keysIndex = i;\r\n }\r\n return this.data.d.k[this.keysIndex].s;\r\n};\r\n\r\nTextProperty.prototype.buildFinalText = function (text) {\r\n var combinedCharacters = FontManager.getCombinedCharacterCodes();\r\n var charactersArray = [];\r\n var i = 0; var\r\n len = text.length;\r\n var charCode;\r\n while (i < len) {\r\n charCode = text.charCodeAt(i);\r\n if (combinedCharacters.indexOf(charCode) !== -1) {\r\n charactersArray[charactersArray.length - 1] += text.charAt(i);\r\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\r\n charCode = text.charCodeAt(i + 1);\r\n if (charCode >= 0xDC00 && charCode <= 0xDFFF) {\r\n charactersArray.push(text.substr(i, 2));\r\n i += 1;\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n } else {\r\n charactersArray.push(text.charAt(i));\r\n }\r\n i += 1;\r\n }\r\n return charactersArray;\r\n};\r\n\r\nTextProperty.prototype.completeTextData = function (documentData) {\r\n documentData.__complete = true;\r\n var fontManager = this.elem.globalData.fontManager;\r\n var data = this.data;\r\n var letters = [];\r\n var i; var\r\n len;\r\n var newLineFlag; var index = 0; var\r\n val;\r\n var anchorGrouping = data.m.g;\r\n var currentSize = 0; var currentPos = 0; var currentLine = 0; var\r\n lineWidths = [];\r\n var lineWidth = 0;\r\n var maxLineWidth = 0;\r\n var j; var\r\n jLen;\r\n var fontData = fontManager.getFontByName(documentData.f);\r\n var charData; var\r\n cLength = 0;\r\n\r\n var fontProps = getFontProperties(fontData);\r\n documentData.fWeight = fontProps.weight;\r\n documentData.fStyle = fontProps.style;\r\n documentData.finalSize = documentData.s;\r\n documentData.finalText = this.buildFinalText(documentData.t);\r\n len = documentData.finalText.length;\r\n documentData.finalLineHeight = documentData.lh;\r\n var trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var charCode;\r\n if (documentData.sz) {\r\n var flag = true;\r\n var boxWidth = documentData.sz[0];\r\n var boxHeight = documentData.sz[1];\r\n var currentHeight; var\r\n finalText;\r\n while (flag) {\r\n finalText = this.buildFinalText(documentData.t);\r\n currentHeight = 0;\r\n lineWidth = 0;\r\n len = finalText.length;\r\n trackingOffset = (documentData.tr / 1000) * documentData.finalSize;\r\n var lastSpaceIndex = -1;\r\n for (i = 0; i < len; i += 1) {\r\n charCode = finalText[i].charCodeAt(0);\r\n newLineFlag = false;\r\n if (finalText[i] === ' ') {\r\n lastSpaceIndex = i;\r\n } else if (charCode === 13 || charCode === 3) {\r\n lineWidth = 0;\r\n newLineFlag = true;\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\r\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\r\n }\r\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\r\n if (lastSpaceIndex === -1) {\r\n len += 1;\r\n } else {\r\n i = lastSpaceIndex;\r\n }\r\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\r\n // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\r\n lastSpaceIndex = -1;\r\n lineWidth = 0;\r\n } else {\r\n lineWidth += cLength;\r\n lineWidth += trackingOffset;\r\n }\r\n }\r\n currentHeight += (fontData.ascent * documentData.finalSize) / 100;\r\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\r\n documentData.finalSize -= 1;\r\n documentData.finalLineHeight = (documentData.finalSize * documentData.lh) / documentData.s;\r\n } else {\r\n documentData.finalText = finalText;\r\n len = documentData.finalText.length;\r\n flag = false;\r\n }\r\n }\r\n }\r\n lineWidth = -trackingOffset;\r\n cLength = 0;\r\n var uncollapsedSpaces = 0;\r\n var currentChar;\r\n for (i = 0; i < len; i += 1) {\r\n newLineFlag = false;\r\n currentChar = documentData.finalText[i];\r\n charCode = currentChar.charCodeAt(0);\r\n if (charCode === 13 || charCode === 3) {\r\n uncollapsedSpaces = 0;\r\n lineWidths.push(lineWidth);\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidth = -2 * trackingOffset;\r\n val = '';\r\n newLineFlag = true;\r\n currentLine += 1;\r\n } else {\r\n val = currentChar;\r\n }\r\n if (fontManager.chars) {\r\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\r\n cLength = newLineFlag ? 0 : (charData.w * documentData.finalSize) / 100;\r\n } else {\r\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\r\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\r\n }\r\n\r\n //\r\n if (currentChar === ' ') {\r\n uncollapsedSpaces += cLength + trackingOffset;\r\n } else {\r\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\r\n uncollapsedSpaces = 0;\r\n }\r\n letters.push({\r\n l: cLength, an: cLength, add: currentSize, n: newLineFlag, anIndexes: [], val: val, line: currentLine, animatorJustifyOffset: 0,\r\n });\r\n if (anchorGrouping == 2) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || val === ' ' || i === len - 1) {\r\n if (val === '' || val === ' ') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n index += 1;\r\n currentSize = 0;\r\n }\r\n } else if (anchorGrouping == 3) { // eslint-disable-line eqeqeq\r\n currentSize += cLength;\r\n if (val === '' || i === len - 1) {\r\n if (val === '') {\r\n currentSize -= cLength;\r\n }\r\n while (currentPos <= i) {\r\n letters[currentPos].an = currentSize;\r\n letters[currentPos].ind = index;\r\n letters[currentPos].extra = cLength;\r\n currentPos += 1;\r\n }\r\n currentSize = 0;\r\n index += 1;\r\n }\r\n } else {\r\n letters[index].ind = index;\r\n letters[index].extra = 0;\r\n index += 1;\r\n }\r\n }\r\n documentData.l = letters;\r\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\r\n lineWidths.push(lineWidth);\r\n if (documentData.sz) {\r\n documentData.boxWidth = documentData.sz[0];\r\n documentData.justifyOffset = 0;\r\n } else {\r\n documentData.boxWidth = maxLineWidth;\r\n switch (documentData.j) {\r\n case 1:\r\n documentData.justifyOffset = -documentData.boxWidth;\r\n break;\r\n case 2:\r\n documentData.justifyOffset = -documentData.boxWidth / 2;\r\n break;\r\n default:\r\n documentData.justifyOffset = 0;\r\n }\r\n }\r\n documentData.lineWidths = lineWidths;\r\n\r\n var animators = data.a; var animatorData; var\r\n letterData;\r\n jLen = animators.length;\r\n var based; var ind; var\r\n indexes = [];\r\n for (j = 0; j < jLen; j += 1) {\r\n animatorData = animators[j];\r\n if (animatorData.a.sc) {\r\n documentData.strokeColorAnim = true;\r\n }\r\n if (animatorData.a.sw) {\r\n documentData.strokeWidthAnim = true;\r\n }\r\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\r\n documentData.fillColorAnim = true;\r\n }\r\n ind = 0;\r\n based = animatorData.s.b;\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n letterData.anIndexes[j] = ind;\r\n if ((based == 1 && letterData.val !== '') || (based == 2 && letterData.val !== '' && letterData.val !== ' ') || (based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1)) || (based == 4 && (letterData.n || i == len - 1))) { // eslint-disable-line eqeqeq\r\n if (animatorData.s.rn === 1) {\r\n indexes.push(ind);\r\n }\r\n ind += 1;\r\n }\r\n }\r\n data.a[j].s.totalChars = ind;\r\n var currentInd = -1; var\r\n newInd;\r\n if (animatorData.s.rn === 1) {\r\n for (i = 0; i < len; i += 1) {\r\n letterData = letters[i];\r\n if (currentInd != letterData.anIndexes[j]) { // eslint-disable-line eqeqeq\r\n currentInd = letterData.anIndexes[j];\r\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\r\n }\r\n letterData.anIndexes[j] = newInd;\r\n }\r\n }\r\n }\r\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\r\n documentData.ls = documentData.ls || 0;\r\n documentData.ascent = (fontData.ascent * documentData.finalSize) / 100;\r\n};\r\n\r\nTextProperty.prototype.updateDocumentData = function (newData, index) {\r\n index = index === undefined ? this.keysIndex : index;\r\n var dData = this.copyData({}, this.data.d.k[index].s);\r\n dData = this.copyData(dData, newData);\r\n this.data.d.k[index].s = dData;\r\n this.recalculate(index);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.recalculate = function (index) {\r\n var dData = this.data.d.k[index].s;\r\n dData.__complete = false;\r\n this.keysIndex = 0;\r\n this._isFirstFrame = true;\r\n this.getValue(dData);\r\n};\r\n\r\nTextProperty.prototype.canResizeFont = function (_canResize) {\r\n this.canResize = _canResize;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\nTextProperty.prototype.setMinimumFontSize = function (_fontValue) {\r\n this.minimumFontSize = Math.floor(_fontValue) || 1;\r\n this.recalculate(this.keysIndex);\r\n this.elem.addDynamicProperty(this);\r\n};\r\n\r\n/* global extendPrototype, BezierFactory, PropertyFactory, DynamicPropertyContainer */\r\n/* exported TextSelectorProp */\r\n\r\nvar TextSelectorProp = (function () {\r\n var max = Math.max;\r\n var min = Math.min;\r\n var floor = Math.floor;\r\n\r\n function TextSelectorPropFactory(elem, data) {\r\n this._currentTextLength = -1;\r\n this.k = false;\r\n this.data = data;\r\n this.elem = elem;\r\n this.comp = elem.comp;\r\n this.finalS = 0;\r\n this.finalE = 0;\r\n this.initDynamicPropertyContainer(elem);\r\n this.s = PropertyFactory.getProp(elem, data.s || { k: 0 }, 0, 0, this);\r\n if ('e' in data) {\r\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\r\n } else {\r\n this.e = { v: 100 };\r\n }\r\n this.o = PropertyFactory.getProp(elem, data.o || { k: 0 }, 0, 0, this);\r\n this.xe = PropertyFactory.getProp(elem, data.xe || { k: 0 }, 0, 0, this);\r\n this.ne = PropertyFactory.getProp(elem, data.ne || { k: 0 }, 0, 0, this);\r\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\r\n if (!this.dynamicProperties.length) {\r\n this.getValue();\r\n }\r\n }\r\n\r\n TextSelectorPropFactory.prototype = {\r\n getMult: function (ind) {\r\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\r\n this.getValue();\r\n }\r\n // var easer = bez.getEasingCurve(this.ne.v/100,0,1-this.xe.v/100,1);\r\n var x1 = 0;\r\n var y1 = 0;\r\n var x2 = 1;\r\n var y2 = 1;\r\n if (this.ne.v > 0) {\r\n x1 = this.ne.v / 100.0;\r\n } else {\r\n y1 = -this.ne.v / 100.0;\r\n }\r\n if (this.xe.v > 0) {\r\n x2 = 1.0 - this.xe.v / 100.0;\r\n } else {\r\n y2 = 1.0 + this.xe.v / 100.0;\r\n }\r\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\r\n\r\n var mult = 0;\r\n var s = this.finalS;\r\n var e = this.finalE;\r\n var type = this.data.sh;\r\n if (type === 2) {\r\n if (e === s) {\r\n mult = ind >= e ? 1 : 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 3) {\r\n if (e === s) {\r\n mult = ind >= e ? 0 : 1;\r\n } else {\r\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n }\r\n\r\n mult = easer(mult);\r\n } else if (type === 4) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\r\n if (mult < 0.5) {\r\n mult *= 2;\r\n } else {\r\n mult = 1 - 2 * (mult - 0.5);\r\n }\r\n }\r\n mult = easer(mult);\r\n } else if (type === 5) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n var tot = e - s;\r\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n var x = -tot / 2 + ind;\r\n var a = tot / 2;\r\n mult = Math.sqrt(1 - (x * x) / (a * a));\r\n }\r\n mult = easer(mult);\r\n } else if (type === 6) {\r\n if (e === s) {\r\n mult = 0;\r\n } else {\r\n ind = min(max(0, ind + 0.5 - s), e - s);\r\n mult = (1 + (Math.cos((Math.PI + Math.PI * 2 * (ind) / (e - s))))) / 2; // eslint-disable-line\r\n }\r\n mult = easer(mult);\r\n } else {\r\n if (ind >= floor(s)) {\r\n if (ind - s < 0) {\r\n mult = max(0, min(min(e, 1) - (s - ind), 1));\r\n } else {\r\n mult = max(0, min(e - ind, 1));\r\n }\r\n }\r\n mult = easer(mult);\r\n }\r\n return mult * this.a.v;\r\n },\r\n getValue: function (newCharsFlag) {\r\n this.iterateDynamicProperties();\r\n this._mdf = newCharsFlag || this._mdf;\r\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\r\n if (newCharsFlag && this.data.r === 2) {\r\n this.e.v = this._currentTextLength;\r\n }\r\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\r\n var o = this.o.v / divisor;\r\n var s = this.s.v / divisor + o;\r\n var e = (this.e.v / divisor) + o;\r\n if (s > e) {\r\n var _s = s;\r\n s = e;\r\n e = _s;\r\n }\r\n this.finalS = s;\r\n this.finalE = e;\r\n },\r\n };\r\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\r\n\r\n function getTextSelectorProp(elem, data, arr) {\r\n return new TextSelectorPropFactory(elem, data, arr);\r\n }\r\n\r\n return {\r\n getTextSelectorProp: getTextSelectorProp,\r\n };\r\n}());\r\n\r\n/* global createSizedArray, pooling */\r\n/* exported poolFactory */\r\n\r\nvar poolFactory = (function () {\r\n return function (initialLength, _create, _release) {\r\n var _length = 0;\r\n var _maxLength = initialLength;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n var ob = {\r\n newElement: newElement,\r\n release: release,\r\n };\r\n\r\n function newElement() {\r\n var element;\r\n if (_length) {\r\n _length -= 1;\r\n element = pool[_length];\r\n } else {\r\n element = _create();\r\n }\r\n return element;\r\n }\r\n\r\n function release(element) {\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n if (_release) {\r\n _release(element);\r\n }\r\n pool[_length] = element;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n };\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported pooling */\r\n\r\nvar pooling = (function () {\r\n function double(arr) {\r\n return arr.concat(createSizedArray(arr.length));\r\n }\r\n\r\n return {\r\n double: double,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, poolFactory */\r\n/* exported pointPool */\r\n\r\nvar pointPool = (function () {\r\n function create() {\r\n return createTypedArray('float32', 2);\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* global ShapePath, pointPool, poolFactory */\r\n/* exported shapePool */\r\n\r\nvar shapePool = (function () {\r\n function create() {\r\n return new ShapePath();\r\n }\r\n\r\n function release(shapePath) {\r\n var len = shapePath._length;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n pointPool.release(shapePath.v[i]);\r\n pointPool.release(shapePath.i[i]);\r\n pointPool.release(shapePath.o[i]);\r\n shapePath.v[i] = null;\r\n shapePath.i[i] = null;\r\n shapePath.o[i] = null;\r\n }\r\n shapePath._length = 0;\r\n shapePath.c = false;\r\n }\r\n\r\n function clone(shape) {\r\n var cloned = factory.newElement();\r\n var i;\r\n var len = shape._length === undefined ? shape.v.length : shape._length;\r\n cloned.setLength(len);\r\n cloned.c = shape.c;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\r\n }\r\n return cloned;\r\n }\r\n\r\n var factory = poolFactory(4, create, release);\r\n factory.clone = clone;\r\n\r\n return factory;\r\n}());\r\n\r\n/* global createSizedArray, ShapeCollection, shapePool, pooling */\r\n/* exported shapeCollectionPool */\r\n\r\nvar shapeCollectionPool = (function () {\r\n var ob = {\r\n newShapeCollection: newShapeCollection,\r\n release: release,\r\n };\r\n\r\n var _length = 0;\r\n var _maxLength = 4;\r\n var pool = createSizedArray(_maxLength);\r\n\r\n function newShapeCollection() {\r\n var shapeCollection;\r\n if (_length) {\r\n _length -= 1;\r\n shapeCollection = pool[_length];\r\n } else {\r\n shapeCollection = new ShapeCollection();\r\n }\r\n return shapeCollection;\r\n }\r\n\r\n function release(shapeCollection) {\r\n var i;\r\n var len = shapeCollection._length;\r\n for (i = 0; i < len; i += 1) {\r\n shapePool.release(shapeCollection.shapes[i]);\r\n }\r\n shapeCollection._length = 0;\r\n\r\n if (_length === _maxLength) {\r\n pool = pooling.double(pool);\r\n _maxLength *= 2;\r\n }\r\n pool[_length] = shapeCollection;\r\n _length += 1;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global poolFactory, bezierLengthPool */\r\n/* exported segmentsLengthPool */\r\n\r\nvar segmentsLengthPool = (function () {\r\n function create() {\r\n return {\r\n lengths: [],\r\n totalLength: 0,\r\n };\r\n }\r\n\r\n function release(element) {\r\n var i;\r\n var len = element.lengths.length;\r\n for (i = 0; i < len; i += 1) {\r\n bezierLengthPool.release(element.lengths[i]);\r\n }\r\n element.lengths.length = 0;\r\n }\r\n\r\n return poolFactory(8, create, release);\r\n}());\r\n\r\n/* global createTypedArray, defaultCurveSegments, poolFactory */\r\n/* exported bezierLengthPool */\r\n\r\nvar bezierLengthPool = (function () {\r\n function create() {\r\n return {\r\n addedLength: 0,\r\n percents: createTypedArray('float32', defaultCurveSegments),\r\n lengths: createTypedArray('float32', defaultCurveSegments),\r\n };\r\n }\r\n return poolFactory(8, create);\r\n}());\r\n\r\n/* exported markerParser */\r\n\r\nvar markerParser = (\r\n\r\n function () {\r\n function parsePayloadLines(payload) {\r\n var lines = payload.split('\\r\\n');\r\n var keys = {};\r\n var line;\r\n var keysCount = 0;\r\n for (var i = 0; i < lines.length; i += 1) {\r\n line = lines[i].split(':');\r\n if (line.length === 2) {\r\n keys[line[0]] = line[1].trim();\r\n keysCount += 1;\r\n }\r\n }\r\n if (keysCount === 0) {\r\n throw new Error();\r\n }\r\n return keys;\r\n }\r\n\r\n return function (_markers) {\r\n var markers = [];\r\n for (var i = 0; i < _markers.length; i += 1) {\r\n var _marker = _markers[i];\r\n var markerData = {\r\n time: _marker.tm,\r\n duration: _marker.dr,\r\n };\r\n try {\r\n markerData.payload = JSON.parse(_markers[i].cm);\r\n } catch (_) {\r\n try {\r\n markerData.payload = parsePayloadLines(_markers[i].cm);\r\n } catch (__) {\r\n markerData.payload = {\r\n name: _markers[i],\r\n };\r\n }\r\n }\r\n markers.push(markerData);\r\n }\r\n return markers;\r\n };\r\n }());\r\n\r\n/* global AudioElement, FootageElement, FontManager */\r\n\r\nfunction BaseRenderer() {}\r\nBaseRenderer.prototype.checkLayers = function (num) {\r\n var i;\r\n var len = this.layers.length;\r\n var data;\r\n this.completeLayers = true;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (!this.elements[i]) {\r\n data = this.layers[i];\r\n if (data.ip - data.st <= (num - this.layers[i].st) && data.op - data.st > (num - this.layers[i].st)) {\r\n this.buildItem(i);\r\n }\r\n }\r\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.createItem = function (layer) {\r\n switch (layer.ty) {\r\n case 2:\r\n return this.createImage(layer);\r\n case 0:\r\n return this.createComp(layer);\r\n case 1:\r\n return this.createSolid(layer);\r\n case 3:\r\n return this.createNull(layer);\r\n case 4:\r\n return this.createShape(layer);\r\n case 5:\r\n return this.createText(layer);\r\n case 6:\r\n return this.createAudio(layer);\r\n case 13:\r\n return this.createCamera(layer);\r\n case 15:\r\n return this.createFootage(layer);\r\n default:\r\n return this.createNull(layer);\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.createCamera = function () {\r\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\r\n};\r\n\r\nBaseRenderer.prototype.createAudio = function (data) {\r\n return new AudioElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.createFootage = function (data) {\r\n return new FootageElement(data, this.globalData, this);\r\n};\r\n\r\nBaseRenderer.prototype.buildAllItems = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.buildItem(i);\r\n }\r\n this.checkPendingElements();\r\n};\r\n\r\nBaseRenderer.prototype.includeLayers = function (newLayers) {\r\n this.completeLayers = false;\r\n var i;\r\n var len = newLayers.length;\r\n var j;\r\n var jLen = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n j = 0;\r\n while (j < jLen) {\r\n if (this.layers[j].id === newLayers[i].id) {\r\n this.layers[j] = newLayers[i];\r\n break;\r\n }\r\n j += 1;\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setProjectInterface = function (pInterface) {\r\n this.globalData.projectInterface = pInterface;\r\n};\r\n\r\nBaseRenderer.prototype.initItems = function () {\r\n if (!this.globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n};\r\nBaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\r\n var elements = this.elements;\r\n var layers = this.layers;\r\n var i = 0;\r\n var len = layers.length;\r\n while (i < len) {\r\n if (layers[i].ind == parentName) { // eslint-disable-line eqeqeq\r\n if (!elements[i] || elements[i] === true) {\r\n this.buildItem(i);\r\n this.addPendingElement(element);\r\n } else {\r\n hierarchy.push(elements[i]);\r\n elements[i].setAsParent();\r\n if (layers[i].parent !== undefined) {\r\n this.buildElementParenting(element, layers[i].parent, hierarchy);\r\n } else {\r\n element.setHierarchy(hierarchy);\r\n }\r\n }\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.addPendingElement = function (element) {\r\n this.pendingElements.push(element);\r\n};\r\n\r\nBaseRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i]);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\nBaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\r\n this.globalData.fontManager = new FontManager();\r\n this.globalData.fontManager.addChars(animData.chars);\r\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\r\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\r\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\r\n this.globalData.imageLoader = this.animationItem.imagePreloader;\r\n this.globalData.audioController = this.animationItem.audioController;\r\n this.globalData.frameId = 0;\r\n this.globalData.frameRate = animData.fr;\r\n this.globalData.nm = animData.nm;\r\n this.globalData.compSize = {\r\n w: animData.w,\r\n h: animData.h,\r\n };\r\n};\r\n\r\n/* global createElementID, extendPrototype, BaseRenderer, NullElement, SVGShapeElement, SVGTextLottieElement,\r\nIImageElement, SVGCompElement, ISolidElement, createNS, locationHref, createSizedArray, expressionsPlugin */\r\n\r\nfunction SVGRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.svgElement = createNS('svg');\r\n var ariaLabel = '';\r\n if (config && config.title) {\r\n var titleElement = createNS('title');\r\n var titleId = createElementID();\r\n titleElement.setAttribute('id', titleId);\r\n titleElement.textContent = config.title;\r\n this.svgElement.appendChild(titleElement);\r\n ariaLabel += titleId;\r\n }\r\n if (config && config.description) {\r\n var descElement = createNS('desc');\r\n var descId = createElementID();\r\n descElement.setAttribute('id', descId);\r\n descElement.textContent = config.description;\r\n this.svgElement.appendChild(descElement);\r\n ariaLabel += ' ' + descId;\r\n }\r\n if (ariaLabel) {\r\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\r\n }\r\n var defs = createNS('defs');\r\n this.svgElement.appendChild(defs);\r\n var maskElement = createNS('g');\r\n this.svgElement.appendChild(maskElement);\r\n this.layerElement = maskElement;\r\n this.renderConfig = {\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n hideOnTransparent: !((config && config.hideOnTransparent === false)),\r\n viewBoxOnly: (config && config.viewBoxOnly) || false,\r\n viewBoxSize: (config && config.viewBoxSize) || false,\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n focusable: config && config.focusable,\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '100%',\r\n height: (config && config.filterSize && config.filterSize.height) || '100%',\r\n x: (config && config.filterSize && config.filterSize.x) || '0%',\r\n y: (config && config.filterSize && config.filterSize.y) || '0%',\r\n },\r\n };\r\n\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n defs: defs,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.destroyed = false;\r\n this.rendererType = 'svg';\r\n}\r\n\r\nextendPrototype([BaseRenderer], SVGRenderer);\r\n\r\nSVGRenderer.prototype.createNull = function (data) {\r\n return new NullElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createShape = function (data) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createText = function (data) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createImage = function (data) {\r\n return new IImageElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createComp = function (data) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.createSolid = function (data) {\r\n return new ISolidElement(data, this.globalData, this);\r\n};\r\n\r\nSVGRenderer.prototype.configAnimation = function (animData) {\r\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n if (this.renderConfig.viewBoxSize) {\r\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\r\n } else {\r\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\r\n }\r\n\r\n if (!this.renderConfig.viewBoxOnly) {\r\n this.svgElement.setAttribute('width', animData.w);\r\n this.svgElement.setAttribute('height', animData.h);\r\n this.svgElement.style.width = '100%';\r\n this.svgElement.style.height = '100%';\r\n this.svgElement.style.transform = 'translate3d(0,0,0)';\r\n }\r\n if (this.renderConfig.className) {\r\n this.svgElement.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.svgElement.setAttribute('id', this.renderConfig.id);\r\n }\r\n if (this.renderConfig.focusable !== undefined) {\r\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\r\n }\r\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\r\n // this.layerElement.style.transform = 'translate3d(0,0,0)';\r\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\r\n this.animationItem.wrapper.appendChild(this.svgElement);\r\n // Mask animation\r\n var defs = this.globalData.defs;\r\n\r\n this.setupGlobalData(animData, defs);\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.data = animData;\r\n\r\n var maskElement = createNS('clipPath');\r\n var rect = createNS('rect');\r\n rect.setAttribute('width', animData.w);\r\n rect.setAttribute('height', animData.h);\r\n rect.setAttribute('x', 0);\r\n rect.setAttribute('y', 0);\r\n var maskId = createElementID();\r\n maskElement.setAttribute('id', maskId);\r\n maskElement.appendChild(rect);\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + maskId + ')');\r\n\r\n defs.appendChild(maskElement);\r\n this.layers = animData.layers;\r\n this.elements = createSizedArray(animData.layers.length);\r\n};\r\n\r\nSVGRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.layerElement = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nSVGRenderer.prototype.updateContainerSize = function () {\r\n};\r\n\r\nSVGRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n elements[pos] = true;\r\n var element = this.createItem(this.layers[pos]);\r\n\r\n elements[pos] = element;\r\n if (expressionsPlugin) {\r\n if (this.layers[pos].ty === 0) {\r\n this.globalData.projectInterface.registerComposition(element);\r\n }\r\n element.initExpressions();\r\n }\r\n this.appendElementInPos(element, pos);\r\n if (this.layers[pos].tt) {\r\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\r\n this.buildItem(pos - 1);\r\n this.addPendingElement(element);\r\n } else {\r\n element.setMatte(elements[pos - 1].layerId);\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n if (element.data.tt) {\r\n var i = 0;\r\n var len = this.elements.length;\r\n while (i < len) {\r\n if (this.elements[i] === element) {\r\n element.setMatte(this.elements[i - 1].layerId);\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.renderFrame = function (num) {\r\n if (this.renderedFrame === num || this.destroyed) {\r\n return;\r\n }\r\n if (num === null) {\r\n num = this.renderedFrame;\r\n } else {\r\n this.renderedFrame = num;\r\n }\r\n // console.log('-------');\r\n // console.log('FRAME ',num);\r\n this.globalData.frameNum = num;\r\n this.globalData.frameId += 1;\r\n this.globalData.projectInterface.currentFrame = num;\r\n this.globalData._mdf = false;\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newElement = element.getBaseElement();\r\n if (!newElement) {\r\n return;\r\n }\r\n var i = 0;\r\n var nextElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\r\n nextElement = this.elements[i].getBaseElement();\r\n }\r\n i += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(newElement, nextElement);\r\n } else {\r\n this.layerElement.appendChild(newElement);\r\n }\r\n};\r\n\r\nSVGRenderer.prototype.hide = function () {\r\n this.layerElement.style.display = 'none';\r\n};\r\n\r\nSVGRenderer.prototype.show = function () {\r\n this.layerElement.style.display = 'block';\r\n};\r\n\r\n/* global CVContextData, Matrix, extendPrototype, BaseRenderer, CVShapeElement, CVTextElement,\r\nCVImageElement, CVCompElement, CVSolidElement, SVGRenderer, createTag, createSizedArray */\r\n\r\nfunction CanvasRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.renderConfig = {\r\n clearCanvas: (config && config.clearCanvas !== undefined) ? config.clearCanvas : true,\r\n context: (config && config.context) || null,\r\n progressiveLoad: (config && config.progressiveLoad) || false,\r\n preserveAspectRatio: (config && config.preserveAspectRatio) || 'xMidYMid meet',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n className: (config && config.className) || '',\r\n id: (config && config.id) || '',\r\n };\r\n this.renderConfig.dpr = (config && config.dpr) || 1;\r\n if (this.animationItem.wrapper) {\r\n this.renderConfig.dpr = (config && config.dpr) || window.devicePixelRatio || 1;\r\n }\r\n this.renderedFrame = -1;\r\n this.globalData = {\r\n frameNum: -1,\r\n _mdf: false,\r\n renderConfig: this.renderConfig,\r\n currentGlobalAlpha: -1,\r\n };\r\n this.contextData = new CVContextData();\r\n this.elements = [];\r\n this.pendingElements = [];\r\n this.transformMat = new Matrix();\r\n this.completeLayers = false;\r\n this.rendererType = 'canvas';\r\n}\r\nextendPrototype([BaseRenderer], CanvasRenderer);\r\n\r\nCanvasRenderer.prototype.createShape = function (data) {\r\n return new CVShapeElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createText = function (data) {\r\n return new CVTextElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createImage = function (data) {\r\n return new CVImageElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createComp = function (data) {\r\n return new CVCompElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createSolid = function (data) {\r\n return new CVSolidElement(data, this.globalData, this);\r\n};\r\n\r\nCanvasRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nCanvasRenderer.prototype.ctxTransform = function (props) {\r\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\r\n return;\r\n }\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\r\n return;\r\n }\r\n this.transformMat.cloneFromProps(props);\r\n var cProps = this.contextData.cTr.props;\r\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]);\r\n // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\r\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\r\n var trProps = this.contextData.cTr.props;\r\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\r\n};\r\n\r\nCanvasRenderer.prototype.ctxOpacity = function (op) {\r\n /* if(op === 1){\r\n return;\r\n } */\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n return;\r\n }\r\n this.contextData.cO *= op < 0 ? 0 : op;\r\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\r\n this.canvasContext.globalAlpha = this.contextData.cO;\r\n this.globalData.currentGlobalAlpha = this.contextData.cO;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.reset = function () {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n this.contextData.reset();\r\n};\r\n\r\nCanvasRenderer.prototype.save = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.save();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.save();\r\n }\r\n var props = this.contextData.cTr.props;\r\n if (this.contextData._length <= this.contextData.cArrPos) {\r\n this.contextData.duplicate();\r\n }\r\n var i;\r\n var arr = this.contextData.saved[this.contextData.cArrPos];\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = props[i];\r\n }\r\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\r\n this.contextData.cArrPos += 1;\r\n};\r\n\r\nCanvasRenderer.prototype.restore = function (actionFlag) {\r\n if (!this.renderConfig.clearCanvas) {\r\n this.canvasContext.restore();\r\n return;\r\n }\r\n if (actionFlag) {\r\n this.canvasContext.restore();\r\n this.globalData.blendMode = 'source-over';\r\n }\r\n this.contextData.cArrPos -= 1;\r\n var popped = this.contextData.saved[this.contextData.cArrPos];\r\n var i;\r\n var arr = this.contextData.cTr.props;\r\n for (i = 0; i < 16; i += 1) {\r\n arr[i] = popped[i];\r\n }\r\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\r\n popped = this.contextData.savedOp[this.contextData.cArrPos];\r\n this.contextData.cO = popped;\r\n if (this.globalData.currentGlobalAlpha !== popped) {\r\n this.canvasContext.globalAlpha = popped;\r\n this.globalData.currentGlobalAlpha = popped;\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.configAnimation = function (animData) {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.container = createTag('canvas');\r\n var containerStyle = this.animationItem.container.style;\r\n containerStyle.width = '100%';\r\n containerStyle.height = '100%';\r\n var origin = '0px 0px 0px';\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n containerStyle['-webkit-transform'] = origin;\r\n this.animationItem.wrapper.appendChild(this.animationItem.container);\r\n this.canvasContext = this.animationItem.container.getContext('2d');\r\n if (this.renderConfig.className) {\r\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\r\n }\r\n if (this.renderConfig.id) {\r\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\r\n }\r\n } else {\r\n this.canvasContext = this.renderConfig.context;\r\n }\r\n this.data = animData;\r\n this.layers = animData.layers;\r\n this.transformCanvas = {\r\n w: animData.w,\r\n h: animData.h,\r\n sx: 0,\r\n sy: 0,\r\n tx: 0,\r\n ty: 0,\r\n };\r\n this.setupGlobalData(animData, document.body);\r\n this.globalData.canvasContext = this.canvasContext;\r\n this.globalData.renderer = this;\r\n this.globalData.isDashed = false;\r\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\r\n this.globalData.transformCanvas = this.transformCanvas;\r\n this.elements = createSizedArray(animData.layers.length);\r\n\r\n this.updateContainerSize();\r\n};\r\n\r\nCanvasRenderer.prototype.updateContainerSize = function () {\r\n this.reset();\r\n var elementWidth;\r\n var elementHeight;\r\n if (this.animationItem.wrapper && this.animationItem.container) {\r\n elementWidth = this.animationItem.wrapper.offsetWidth;\r\n elementHeight = this.animationItem.wrapper.offsetHeight;\r\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\r\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\r\n } else {\r\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\r\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\r\n }\r\n var elementRel;\r\n var animationRel;\r\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\r\n var par = this.renderConfig.preserveAspectRatio.split(' ');\r\n var fillType = par[1] || 'meet';\r\n var pos = par[0] || 'xMidYMid';\r\n var xPos = pos.substr(0, 4);\r\n var yPos = pos.substr(4);\r\n elementRel = elementWidth / elementHeight;\r\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\r\n if ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice')) {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n } else {\r\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n }\r\n\r\n if (xPos === 'xMid' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = ((elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2) * this.renderConfig.dpr;\r\n } else if (xPos === 'xMax' && ((animationRel < elementRel && fillType === 'meet') || (animationRel > elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.tx = 0;\r\n }\r\n if (yPos === 'YMid' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2) * this.renderConfig.dpr;\r\n } else if (yPos === 'YMax' && ((animationRel > elementRel && fillType === 'meet') || (animationRel < elementRel && fillType === 'slice'))) {\r\n this.transformCanvas.ty = ((elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w))) * this.renderConfig.dpr;\r\n } else {\r\n this.transformCanvas.ty = 0;\r\n }\r\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\r\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\r\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n } else {\r\n this.transformCanvas.sx = this.renderConfig.dpr;\r\n this.transformCanvas.sy = this.renderConfig.dpr;\r\n this.transformCanvas.tx = 0;\r\n this.transformCanvas.ty = 0;\r\n }\r\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\r\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.elements.length = 0;\r\n this.globalData.canvasContext = null;\r\n this.animationItem.container = null;\r\n this.destroyed = true;\r\n};\r\n\r\nCanvasRenderer.prototype.renderFrame = function (num, forceRender) {\r\n if ((this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender) || this.destroyed || num === -1) {\r\n return;\r\n }\r\n this.renderedFrame = num;\r\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\r\n this.globalData.frameId += 1;\r\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\r\n this.globalData.projectInterface.currentFrame = num;\r\n\r\n // console.log('--------');\r\n // console.log('NEW: ',num);\r\n var i;\r\n var len = this.layers.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(num);\r\n }\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(num - this.layers[i].st);\r\n }\r\n }\r\n if (this.globalData._mdf) {\r\n if (this.renderConfig.clearCanvas === true) {\r\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\r\n } else {\r\n this.save();\r\n }\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n if (this.renderConfig.clearCanvas !== true) {\r\n this.restore();\r\n }\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.buildItem = function (pos) {\r\n var elements = this.elements;\r\n if (elements[pos] || this.layers[pos].ty === 99) {\r\n return;\r\n }\r\n var element = this.createItem(this.layers[pos], this, this.globalData);\r\n elements[pos] = element;\r\n element.initExpressions();\r\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\r\n};\r\n\r\nCanvasRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nCanvasRenderer.prototype.hide = function () {\r\n this.animationItem.container.style.display = 'none';\r\n};\r\n\r\nCanvasRenderer.prototype.show = function () {\r\n this.animationItem.container.style.display = 'block';\r\n};\r\n\r\n/* global extendPrototype, BaseRenderer, SVGRenderer, SVGShapeElement, HShapeElement, SVGTextLottieElement,\r\nHTextElement, HCameraElement, IImageElement, HImageElement, SVGCompElement, HCompElement, ISolidElement,\r\nHSolidElement, styleDiv, createTag, createNS */\r\n\r\nfunction HybridRenderer(animationItem, config) {\r\n this.animationItem = animationItem;\r\n this.layers = null;\r\n this.renderedFrame = -1;\r\n this.renderConfig = {\r\n className: (config && config.className) || '',\r\n imagePreserveAspectRatio: (config && config.imagePreserveAspectRatio) || 'xMidYMid slice',\r\n hideOnTransparent: !(config && config.hideOnTransparent === false),\r\n filterSize: {\r\n width: (config && config.filterSize && config.filterSize.width) || '400%',\r\n height: (config && config.filterSize && config.filterSize.height) || '400%',\r\n x: (config && config.filterSize && config.filterSize.x) || '-100%',\r\n y: (config && config.filterSize && config.filterSize.y) || '-100%',\r\n },\r\n };\r\n this.globalData = {\r\n _mdf: false,\r\n frameNum: -1,\r\n renderConfig: this.renderConfig,\r\n };\r\n this.pendingElements = [];\r\n this.elements = [];\r\n this.threeDElements = [];\r\n this.destroyed = false;\r\n this.camera = null;\r\n this.supports3d = true;\r\n this.rendererType = 'html';\r\n}\r\n\r\nextendPrototype([BaseRenderer], HybridRenderer);\r\n\r\nHybridRenderer.prototype.buildItem = SVGRenderer.prototype.buildItem;\r\n\r\nHybridRenderer.prototype.checkPendingElements = function () {\r\n while (this.pendingElements.length) {\r\n var element = this.pendingElements.pop();\r\n element.checkParenting();\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.appendElementInPos = function (element, pos) {\r\n var newDOMElement = element.getBaseElement();\r\n if (!newDOMElement) {\r\n return;\r\n }\r\n var layer = this.layers[pos];\r\n if (!layer.ddd || !this.supports3d) {\r\n if (this.threeDElements) {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n } else {\r\n var i = 0;\r\n var nextDOMElement;\r\n var nextLayer;\r\n var tmpDOMElement;\r\n while (i < pos) {\r\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\r\n nextLayer = this.elements[i];\r\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\r\n nextDOMElement = tmpDOMElement || nextDOMElement;\r\n }\r\n i += 1;\r\n }\r\n if (nextDOMElement) {\r\n if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\r\n }\r\n } else if (!layer.ddd || !this.supports3d) {\r\n this.layerElement.appendChild(newDOMElement);\r\n }\r\n }\r\n } else {\r\n this.addTo3dContainer(newDOMElement, pos);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.createShape = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGShapeElement(data, this.globalData, this);\r\n }\r\n return new HShapeElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createText = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGTextLottieElement(data, this.globalData, this);\r\n }\r\n return new HTextElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createCamera = function (data) {\r\n this.camera = new HCameraElement(data, this.globalData, this);\r\n return this.camera;\r\n};\r\n\r\nHybridRenderer.prototype.createImage = function (data) {\r\n if (!this.supports3d) {\r\n return new IImageElement(data, this.globalData, this);\r\n }\r\n return new HImageElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createComp = function (data) {\r\n if (!this.supports3d) {\r\n return new SVGCompElement(data, this.globalData, this);\r\n }\r\n return new HCompElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createSolid = function (data) {\r\n if (!this.supports3d) {\r\n return new ISolidElement(data, this.globalData, this);\r\n }\r\n return new HSolidElement(data, this.globalData, this);\r\n};\r\n\r\nHybridRenderer.prototype.createNull = SVGRenderer.prototype.createNull;\r\n\r\nHybridRenderer.prototype.getThreeDContainerByPos = function (pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\r\n return this.threeDElements[i].perspectiveElem;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nHybridRenderer.prototype.createThreeDContainer = function (pos, type) {\r\n var perspectiveElem = createTag('div');\r\n var style;\r\n var containerStyle;\r\n styleDiv(perspectiveElem);\r\n var container = createTag('div');\r\n styleDiv(container);\r\n if (type === '3d') {\r\n style = perspectiveElem.style;\r\n style.width = this.globalData.compSize.w + 'px';\r\n style.height = this.globalData.compSize.h + 'px';\r\n var center = '50% 50%';\r\n style.webkitTransformOrigin = center;\r\n style.mozTransformOrigin = center;\r\n style.transformOrigin = center;\r\n containerStyle = container.style;\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n containerStyle.transform = matrix;\r\n containerStyle.webkitTransform = matrix;\r\n }\r\n\r\n perspectiveElem.appendChild(container);\r\n // this.resizerElem.appendChild(perspectiveElem);\r\n var threeDContainerData = {\r\n container: container,\r\n perspectiveElem: perspectiveElem,\r\n startPos: pos,\r\n endPos: pos,\r\n type: type,\r\n };\r\n this.threeDElements.push(threeDContainerData);\r\n return threeDContainerData;\r\n};\r\n\r\nHybridRenderer.prototype.build3dContainers = function () {\r\n var i;\r\n var len = this.layers.length;\r\n var lastThreeDContainerData;\r\n var currentContainer = '';\r\n for (i = 0; i < len; i += 1) {\r\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\r\n if (currentContainer !== '3d') {\r\n currentContainer = '3d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n } else {\r\n if (currentContainer !== '2d') {\r\n currentContainer = '2d';\r\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\r\n }\r\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\r\n }\r\n }\r\n len = this.threeDElements.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.addTo3dContainer = function (elem, pos) {\r\n var i = 0;\r\n var len = this.threeDElements.length;\r\n while (i < len) {\r\n if (pos <= this.threeDElements[i].endPos) {\r\n var j = this.threeDElements[i].startPos;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.threeDElements[i].container.insertBefore(elem, nextElement);\r\n } else {\r\n this.threeDElements[i].container.appendChild(elem);\r\n }\r\n break;\r\n }\r\n i += 1;\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.configAnimation = function (animData) {\r\n var resizerElem = createTag('div');\r\n var wrapper = this.animationItem.wrapper;\r\n var style = resizerElem.style;\r\n style.width = animData.w + 'px';\r\n style.height = animData.h + 'px';\r\n this.resizerElem = resizerElem;\r\n styleDiv(resizerElem);\r\n style.transformStyle = 'flat';\r\n style.mozTransformStyle = 'flat';\r\n style.webkitTransformStyle = 'flat';\r\n if (this.renderConfig.className) {\r\n resizerElem.setAttribute('class', this.renderConfig.className);\r\n }\r\n wrapper.appendChild(resizerElem);\r\n\r\n style.overflow = 'hidden';\r\n var svg = createNS('svg');\r\n svg.setAttribute('width', '1');\r\n svg.setAttribute('height', '1');\r\n styleDiv(svg);\r\n this.resizerElem.appendChild(svg);\r\n var defs = createNS('defs');\r\n svg.appendChild(defs);\r\n this.data = animData;\r\n // Mask animation\r\n this.setupGlobalData(animData, svg);\r\n this.globalData.defs = defs;\r\n this.layers = animData.layers;\r\n this.layerElement = this.resizerElem;\r\n this.build3dContainers();\r\n this.updateContainerSize();\r\n};\r\n\r\nHybridRenderer.prototype.destroy = function () {\r\n if (this.animationItem.wrapper) {\r\n this.animationItem.wrapper.innerText = '';\r\n }\r\n this.animationItem.container = null;\r\n this.globalData.defs = null;\r\n var i;\r\n var len = this.layers ? this.layers.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n this.elements[i].destroy();\r\n }\r\n this.elements.length = 0;\r\n this.destroyed = true;\r\n this.animationItem = null;\r\n};\r\n\r\nHybridRenderer.prototype.updateContainerSize = function () {\r\n var elementWidth = this.animationItem.wrapper.offsetWidth;\r\n var elementHeight = this.animationItem.wrapper.offsetHeight;\r\n var elementRel = elementWidth / elementHeight;\r\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\r\n var sx;\r\n var sy;\r\n var tx;\r\n var ty;\r\n if (animationRel > elementRel) {\r\n sx = elementWidth / (this.globalData.compSize.w);\r\n sy = elementWidth / (this.globalData.compSize.w);\r\n tx = 0;\r\n ty = ((elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2);\r\n } else {\r\n sx = elementHeight / (this.globalData.compSize.h);\r\n sy = elementHeight / (this.globalData.compSize.h);\r\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\r\n ty = 0;\r\n }\r\n var style = this.resizerElem.style;\r\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\r\n style.transform = style.webkitTransform;\r\n};\r\n\r\nHybridRenderer.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\r\n\r\nHybridRenderer.prototype.hide = function () {\r\n this.resizerElem.style.display = 'none';\r\n};\r\n\r\nHybridRenderer.prototype.show = function () {\r\n this.resizerElem.style.display = 'block';\r\n};\r\n\r\nHybridRenderer.prototype.initItems = function () {\r\n this.buildAllItems();\r\n if (this.camera) {\r\n this.camera.setup();\r\n } else {\r\n var cWidth = this.globalData.compSize.w;\r\n var cHeight = this.globalData.compSize.h;\r\n var i;\r\n var len = this.threeDElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n var style = this.threeDElements[i].perspectiveElem.style;\r\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\r\n style.perspective = style.webkitPerspective;\r\n }\r\n }\r\n};\r\n\r\nHybridRenderer.prototype.searchExtraCompositions = function (assets) {\r\n var i;\r\n var len = assets.length;\r\n var floatingContainer = createTag('div');\r\n for (i = 0; i < len; i += 1) {\r\n if (assets[i].xt) {\r\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\r\n comp.initExpressions();\r\n this.globalData.projectInterface.registerComposition(comp);\r\n }\r\n }\r\n};\r\n\r\n/* global createSizedArray, createElementID, PropertyFactory, ShapePropertyFactory, createNS, locationHref */\r\n\r\nfunction MaskElement(data, element, globalData) {\r\n this.data = data;\r\n this.element = element;\r\n this.globalData = globalData;\r\n this.storedData = [];\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.maskElement = null;\r\n var defs = this.globalData.defs;\r\n var i;\r\n var len = this.masksProperties ? this.masksProperties.length : 0;\r\n this.viewData = createSizedArray(len);\r\n this.solidPath = '';\r\n\r\n var path;\r\n var properties = this.masksProperties;\r\n var count = 0;\r\n var currentMasks = [];\r\n var j;\r\n var jLen;\r\n var layerId = createElementID();\r\n var rect;\r\n var expansor;\r\n var feMorph;\r\n var x;\r\n var maskType = 'clipPath';\r\n var maskRef = 'clip-path';\r\n for (i = 0; i < len; i += 1) {\r\n if ((properties[i].mode !== 'a' && properties[i].mode !== 'n') || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n }\r\n\r\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\r\n rect = createNS('rect');\r\n rect.setAttribute('fill', '#ffffff');\r\n rect.setAttribute('width', this.element.comp.data.w || 0);\r\n rect.setAttribute('height', this.element.comp.data.h || 0);\r\n currentMasks.push(rect);\r\n } else {\r\n rect = null;\r\n }\r\n\r\n path = createNS('path');\r\n if (properties[i].mode === 'n') {\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n elem: path,\r\n lastPath: '',\r\n };\r\n defs.appendChild(path);\r\n } else {\r\n count += 1;\r\n\r\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n path.setAttribute('clip-rule', 'nonzero');\r\n var filterID;\r\n\r\n if (properties[i].x.k !== 0) {\r\n maskType = 'mask';\r\n maskRef = 'mask';\r\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\r\n filterID = createElementID();\r\n expansor = createNS('filter');\r\n expansor.setAttribute('id', filterID);\r\n feMorph = createNS('feMorphology');\r\n feMorph.setAttribute('operator', 'erode');\r\n feMorph.setAttribute('in', 'SourceGraphic');\r\n feMorph.setAttribute('radius', '0');\r\n expansor.appendChild(feMorph);\r\n defs.appendChild(expansor);\r\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\r\n } else {\r\n feMorph = null;\r\n x = null;\r\n }\r\n\r\n // TODO move this to a factory or to a constructor\r\n this.storedData[i] = {\r\n elem: path,\r\n x: x,\r\n expan: feMorph,\r\n lastPath: '',\r\n lastOperator: '',\r\n filterId: filterID,\r\n lastRadius: 0,\r\n };\r\n if (properties[i].mode === 'i') {\r\n jLen = currentMasks.length;\r\n var g = createNS('g');\r\n for (j = 0; j < jLen; j += 1) {\r\n g.appendChild(currentMasks[j]);\r\n }\r\n var mask = createNS('mask');\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.setAttribute('id', layerId + '_' + count);\r\n mask.appendChild(path);\r\n defs.appendChild(mask);\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + layerId + '_' + count + ')');\r\n\r\n currentMasks.length = 0;\r\n currentMasks.push(g);\r\n } else {\r\n currentMasks.push(path);\r\n }\r\n if (properties[i].inv && !this.solidPath) {\r\n this.solidPath = this.createLayerSolidPath();\r\n }\r\n // TODO move this to a factory or to a constructor\r\n this.viewData[i] = {\r\n elem: path,\r\n lastPath: '',\r\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\r\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\r\n invRect: rect,\r\n };\r\n if (!this.viewData[i].prop.k) {\r\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n }\r\n }\r\n\r\n this.maskElement = createNS(maskType);\r\n\r\n len = currentMasks.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.maskElement.appendChild(currentMasks[i]);\r\n }\r\n\r\n if (count > 0) {\r\n this.maskElement.setAttribute('id', layerId);\r\n this.element.maskedElement.setAttribute(maskRef, 'url(' + locationHref + '#' + layerId + ')');\r\n defs.appendChild(this.maskElement);\r\n }\r\n if (this.viewData.length) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nMaskElement.prototype.getMaskProperty = function (pos) {\r\n return this.viewData[pos].prop;\r\n};\r\n\r\nMaskElement.prototype.renderFrame = function (isFirstFrame) {\r\n var finalMat = this.element.finalTransform.mat;\r\n var i;\r\n var len = this.masksProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.viewData[i].prop._mdf || isFirstFrame) {\r\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\r\n }\r\n if (this.viewData[i].op._mdf || isFirstFrame) {\r\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\r\n }\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\r\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\r\n }\r\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\r\n var feMorph = this.storedData[i].expan;\r\n if (this.storedData[i].x.v < 0) {\r\n if (this.storedData[i].lastOperator !== 'erode') {\r\n this.storedData[i].lastOperator = 'erode';\r\n this.storedData[i].elem.setAttribute('filter', 'url(' + locationHref + '#' + this.storedData[i].filterId + ')');\r\n }\r\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\r\n } else {\r\n if (this.storedData[i].lastOperator !== 'dilate') {\r\n this.storedData[i].lastOperator = 'dilate';\r\n this.storedData[i].elem.setAttribute('filter', null);\r\n }\r\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\nMaskElement.prototype.getMaskelement = function () {\r\n return this.maskElement;\r\n};\r\n\r\nMaskElement.prototype.createLayerSolidPath = function () {\r\n var path = 'M0,0 ';\r\n path += ' h' + this.globalData.compSize.w;\r\n path += ' v' + this.globalData.compSize.h;\r\n path += ' h-' + this.globalData.compSize.w;\r\n path += ' v-' + this.globalData.compSize.h + ' ';\r\n return path;\r\n};\r\n\r\nMaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\r\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n var i;\r\n var len;\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\r\n }\r\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\r\n if (pathNodes.c && len > 1) {\r\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\r\n }\r\n // pathNodes.__renderedString = pathString;\r\n\r\n if (viewData.lastPath !== pathString) {\r\n var pathShapeValue = '';\r\n if (viewData.elem) {\r\n if (pathNodes.c) {\r\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\r\n }\r\n viewData.elem.setAttribute('d', pathShapeValue);\r\n }\r\n viewData.lastPath = pathString;\r\n }\r\n};\r\n\r\nMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n this.globalData = null;\r\n this.maskElement = null;\r\n this.data = null;\r\n this.masksProperties = null;\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\r\n\r\nfunction HierarchyElement() {}\r\n\r\nHierarchyElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\r\n initHierarchy: function () {\r\n // element's parent list\r\n this.hierarchy = [];\r\n // if element is parent of another layer _isParent will be true\r\n this._isParent = false;\r\n this.checkParenting();\r\n },\r\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\r\n setHierarchy: function (hierarchy) {\r\n this.hierarchy = hierarchy;\r\n },\r\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\r\n setAsParent: function () {\r\n this._isParent = true;\r\n },\r\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\r\n checkParenting: function () {\r\n if (this.data.parent !== undefined) {\r\n this.comp.buildElementParenting(this, this.data.parent, []);\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\r\n\r\nfunction FrameElement() {}\r\n\r\nFrameElement.prototype = {\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\r\n initFrame: function () {\r\n // set to true when inpoint is rendered\r\n this._isFirstFrame = false;\r\n // list of animated properties\r\n this.dynamicProperties = [];\r\n // If layer has been modified in current tick this will be true\r\n this._mdf = false;\r\n },\r\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\r\n prepareProperties: function (num, isVisible) {\r\n var i;\r\n var len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (isVisible || (this._isParent && this.dynamicProperties[i].propType === 'transform')) {\r\n this.dynamicProperties[i].getValue();\r\n if (this.dynamicProperties[i]._mdf) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n },\r\n addDynamicProperty: function (prop) {\r\n if (this.dynamicProperties.indexOf(prop) === -1) {\r\n this.dynamicProperties.push(prop);\r\n }\r\n },\r\n};\r\n\r\n/* global TransformPropertyFactory, Matrix */\r\n\r\nfunction TransformElement() {}\r\n\r\nTransformElement.prototype = {\r\n initTransform: function () {\r\n this.finalTransform = {\r\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : { o: 0 },\r\n _matMdf: false,\r\n _opMdf: false,\r\n mat: new Matrix(),\r\n };\r\n if (this.data.ao) {\r\n this.finalTransform.mProp.autoOriented = true;\r\n }\r\n\r\n // TODO: check TYPE 11: Guided elements\r\n if (this.data.ty !== 11) {\r\n // this.createElements();\r\n }\r\n },\r\n renderTransform: function () {\r\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\r\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\r\n\r\n if (this.hierarchy) {\r\n var mat;\r\n var finalMat = this.finalTransform.mat;\r\n var i = 0;\r\n var len = this.hierarchy.length;\r\n // Checking if any of the transformation matrices in the hierarchy chain has changed.\r\n if (!this.finalTransform._matMdf) {\r\n while (i < len) {\r\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\r\n this.finalTransform._matMdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n if (this.finalTransform._matMdf) {\r\n mat = this.finalTransform.mProp.v.props;\r\n finalMat.cloneFromProps(mat);\r\n for (i = 0; i < len; i += 1) {\r\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\r\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\r\n }\r\n }\r\n }\r\n },\r\n globalToLocal: function (pt) {\r\n var transforms = [];\r\n transforms.push(this.finalTransform);\r\n var flag = true;\r\n var comp = this.comp;\r\n while (flag) {\r\n if (comp.finalTransform) {\r\n if (comp.data.hasMask) {\r\n transforms.splice(0, 0, comp.finalTransform);\r\n }\r\n comp = comp.comp;\r\n } else {\r\n flag = false;\r\n }\r\n }\r\n var i;\r\n var len = transforms.length;\r\n var ptNew;\r\n for (i = 0; i < len; i += 1) {\r\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\r\n // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\r\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\r\n }\r\n return pt;\r\n },\r\n mHelper: new Matrix(),\r\n};\r\n\r\nfunction RenderableElement() {\r\n\r\n}\r\n\r\nRenderableElement.prototype = {\r\n initRenderable: function () {\r\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\r\n this.isInRange = false;\r\n // layer's display state\r\n this.hidden = false;\r\n // If layer's transparency equals 0, it can be hidden\r\n this.isTransparent = false;\r\n // list of animated components\r\n this.renderableComponents = [];\r\n },\r\n addRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) === -1) {\r\n this.renderableComponents.push(component);\r\n }\r\n },\r\n removeRenderableComponent: function (component) {\r\n if (this.renderableComponents.indexOf(component) !== -1) {\r\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\r\n }\r\n },\r\n prepareRenderableFrame: function (num) {\r\n this.checkLayerLimits(num);\r\n },\r\n checkTransparency: function () {\r\n if (this.finalTransform.mProp.o.v <= 0) {\r\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\r\n this.isTransparent = true;\r\n this.hide();\r\n }\r\n } else if (this.isTransparent) {\r\n this.isTransparent = false;\r\n this.show();\r\n }\r\n },\r\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\r\n checkLayerLimits: function (num) {\r\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\r\n if (this.isInRange !== true) {\r\n this.globalData._mdf = true;\r\n this._mdf = true;\r\n this.isInRange = true;\r\n this.show();\r\n }\r\n } else if (this.isInRange !== false) {\r\n this.globalData._mdf = true;\r\n this.isInRange = false;\r\n this.hide();\r\n }\r\n },\r\n renderRenderable: function () {\r\n var i;\r\n var len = this.renderableComponents.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\r\n }\r\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\r\n },\r\n sourceRectAtTime: function () {\r\n return {\r\n top: 0,\r\n left: 0,\r\n width: 100,\r\n height: 100,\r\n };\r\n },\r\n getLayerSize: function () {\r\n if (this.data.ty === 5) {\r\n return { w: this.data.textData.width, h: this.data.textData.height };\r\n }\r\n return { w: this.data.width, h: this.data.height };\r\n },\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, createProxyFunction */\r\n\r\nfunction RenderableDOMElement() {}\r\n\r\n(function () {\r\n var _prototype = {\r\n initElement: function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n },\r\n hide: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'none';\r\n this.hidden = true;\r\n }\r\n },\r\n show: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n if (!this.data.hd) {\r\n var elem = this.baseElement || this.layerElement;\r\n elem.style.display = 'block';\r\n }\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n renderInnerContent: function () {},\r\n prepareFrame: function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n this.checkTransparency();\r\n },\r\n destroy: function () {\r\n this.innerElem = null;\r\n this.destroyBaseElement();\r\n },\r\n };\r\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\r\n}());\r\n\r\n/* exported ProcessedElement */\r\n\r\nfunction ProcessedElement(element, position) {\r\n this.elem = element;\r\n this.pos = position;\r\n}\r\n\r\n/* global createNS */\r\n\r\nfunction SVGStyleData(data, level) {\r\n this.data = data;\r\n this.type = data.ty;\r\n this.d = '';\r\n this.lvl = level;\r\n this._mdf = false;\r\n this.closed = data.hd === true;\r\n this.pElem = createNS('path');\r\n this.msElem = null;\r\n}\r\n\r\nSVGStyleData.prototype.reset = function () {\r\n this.d = '';\r\n this._mdf = false;\r\n};\r\n\r\nfunction SVGShapeData(transformers, level, shape) {\r\n this.caches = [];\r\n this.styles = [];\r\n this.transformers = transformers;\r\n this.lStr = '';\r\n this.sh = shape;\r\n this.lvl = level;\r\n // TODO find if there are some cases where _isAnimated can be false.\r\n // For now, since shapes add up with other shapes. They have to be calculated every time.\r\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\r\n this._isAnimated = !!shape.k;\r\n // TODO: commenting this for now since all shapes are animated\r\n var i = 0;\r\n var len = transformers.length;\r\n while (i < len) {\r\n if (transformers[i].mProps.dynamicProperties.length) {\r\n this._isAnimated = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n}\r\n\r\nSVGShapeData.prototype.setAsAnimated = function () {\r\n this._isAnimated = true;\r\n};\r\n\r\n/* exported SVGTransformData */\r\n\r\nfunction SVGTransformData(mProps, op, container) {\r\n this.transform = {\r\n mProps: mProps,\r\n op: op,\r\n container: container,\r\n };\r\n this.elements = [];\r\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\r\n}\r\n\r\n/* global DashProperty, PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\r\n\r\n/* global PropertyFactory, extendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\r\n this.style = styleOb;\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGFillStyleData);\r\n\r\n/* global PropertyFactory, degToRads, GradientProperty, createElementID, createNS, locationHref,\r\nextendPrototype, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientFillStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.initGradientData(elem, data, styleOb);\r\n}\r\n\r\nSVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\r\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\r\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\r\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\r\n this.h = PropertyFactory.getProp(elem, data.h || { k: 0 }, 0, 0.01, this);\r\n this.a = PropertyFactory.getProp(elem, data.a || { k: 0 }, 0, degToRads, this);\r\n this.g = new GradientProperty(elem, data.g, this);\r\n this.style = styleOb;\r\n this.stops = [];\r\n this.setGradientData(styleOb.pElem, data);\r\n this.setGradientOpacity(data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\r\n var gradientId = createElementID();\r\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n gfill.setAttribute('id', gradientId);\r\n gfill.setAttribute('spreadMethod', 'pad');\r\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n var stops = [];\r\n var stop;\r\n var j;\r\n var jLen;\r\n jLen = data.g.p * 4;\r\n for (j = 0; j < jLen; j += 4) {\r\n stop = createNS('stop');\r\n gfill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + gradientId + ')');\r\n\r\n this.gf = gfill;\r\n this.cst = stops;\r\n};\r\n\r\nSVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\r\n if (this.g._hasOpacity && !this.g._collapsable) {\r\n var stop;\r\n var j;\r\n var jLen;\r\n var mask = createNS('mask');\r\n var maskElement = createNS('path');\r\n mask.appendChild(maskElement);\r\n var opacityId = createElementID();\r\n var maskId = createElementID();\r\n mask.setAttribute('id', maskId);\r\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\r\n opFill.setAttribute('id', opacityId);\r\n opFill.setAttribute('spreadMethod', 'pad');\r\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\r\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\r\n var stops = this.stops;\r\n for (j = data.g.p * 4; j < jLen; j += 2) {\r\n stop = createNS('stop');\r\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\r\n opFill.appendChild(stop);\r\n stops.push(stop);\r\n }\r\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + locationHref + '#' + opacityId + ')');\r\n this.of = opFill;\r\n this.ms = mask;\r\n this.ost = stops;\r\n this.maskId = maskId;\r\n styleOb.msElem = maskElement;\r\n }\r\n};\r\n\r\nextendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\r\n\r\n/* global PropertyFactory, DashProperty, extendPrototype, SVGGradientFillStyleData, DynamicPropertyContainer */\r\n\r\nfunction SVGGradientStrokeStyleData(elem, data, styleOb) {\r\n this.initDynamicPropertyContainer(elem);\r\n this.getValue = this.iterateDynamicProperties;\r\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\r\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\r\n this.initGradientData(elem, data, styleOb);\r\n this._isAnimated = !!this._isAnimated;\r\n}\r\n\r\nextendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\r\n\r\n/* global createNS */\r\n/* exported ShapeGroupData */\r\n\r\nfunction ShapeGroupData() {\r\n this.it = [];\r\n this.prevViewData = [];\r\n this.gr = createNS('g');\r\n}\r\n\r\n/* global Matrix, buildShapeString, bmFloor */\r\n/* exported SVGElementsRenderer */\r\n\r\nvar SVGElementsRenderer = (function () {\r\n var _identityMatrix = new Matrix();\r\n var _matrixHelper = new Matrix();\r\n\r\n var ob = {\r\n createRenderFunction: createRenderFunction,\r\n };\r\n\r\n function createRenderFunction(data) {\r\n switch (data.ty) {\r\n case 'fl':\r\n return renderFill;\r\n case 'gf':\r\n return renderGradient;\r\n case 'gs':\r\n return renderGradientStroke;\r\n case 'st':\r\n return renderStroke;\r\n case 'sh':\r\n case 'el':\r\n case 'rc':\r\n case 'sr':\r\n return renderPath;\r\n case 'tr':\r\n return renderContentTransform;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n function renderContentTransform(styleData, itemData, isFirstFrame) {\r\n if (isFirstFrame || itemData.transform.op._mdf) {\r\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\r\n }\r\n if (isFirstFrame || itemData.transform.mProps._mdf) {\r\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\r\n }\r\n }\r\n\r\n function renderPath(styleData, itemData, isFirstFrame) {\r\n var j;\r\n var jLen;\r\n var pathStringTransformed;\r\n var redraw;\r\n var pathNodes;\r\n var l;\r\n var lLen = itemData.styles.length;\r\n var lvl = itemData.lvl;\r\n var paths;\r\n var mat;\r\n var props;\r\n var iterations;\r\n var k;\r\n for (l = 0; l < lLen; l += 1) {\r\n redraw = itemData.sh._mdf || isFirstFrame;\r\n if (itemData.styles[l].lvl < lvl) {\r\n mat = _matrixHelper.reset();\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (!redraw && iterations > 0) {\r\n redraw = itemData.transformers[k].mProps._mdf || redraw;\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n if (redraw) {\r\n iterations = lvl - itemData.styles[l].lvl;\r\n k = itemData.transformers.length - 1;\r\n while (iterations > 0) {\r\n props = itemData.transformers[k].mProps.v.props;\r\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n iterations -= 1;\r\n k -= 1;\r\n }\r\n }\r\n } else {\r\n mat = _identityMatrix;\r\n }\r\n paths = itemData.sh.paths;\r\n jLen = paths._length;\r\n if (redraw) {\r\n pathStringTransformed = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes._length) {\r\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\r\n }\r\n }\r\n itemData.caches[l] = pathStringTransformed;\r\n } else {\r\n pathStringTransformed = itemData.caches[l];\r\n }\r\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\r\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\r\n }\r\n }\r\n\r\n function renderFill(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\r\n }\r\n }\r\n\r\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\r\n renderGradient(styleData, itemData, isFirstFrame);\r\n renderStroke(styleData, itemData, isFirstFrame);\r\n }\r\n\r\n function renderGradient(styleData, itemData, isFirstFrame) {\r\n var gfill = itemData.gf;\r\n var hasOpacity = itemData.g._hasOpacity;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n\r\n if (itemData.o._mdf || isFirstFrame) {\r\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\r\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\r\n }\r\n if (itemData.s._mdf || isFirstFrame) {\r\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\r\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\r\n gfill.setAttribute(attr1, pt1[0]);\r\n gfill.setAttribute(attr2, pt1[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute(attr1, pt1[0]);\r\n itemData.of.setAttribute(attr2, pt1[1]);\r\n }\r\n }\r\n var stops;\r\n var i;\r\n var len;\r\n var stop;\r\n if (itemData.g._cmdf || isFirstFrame) {\r\n stops = itemData.cst;\r\n var cValues = itemData.g.c;\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n stop.setAttribute('offset', cValues[i * 4] + '%');\r\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\r\n }\r\n }\r\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\r\n var oValues = itemData.g.o;\r\n if (itemData.g._collapsable) {\r\n stops = itemData.cst;\r\n } else {\r\n stops = itemData.ost;\r\n }\r\n len = stops.length;\r\n for (i = 0; i < len; i += 1) {\r\n stop = stops[i];\r\n if (!itemData.g._collapsable) {\r\n stop.setAttribute('offset', oValues[i * 2] + '%');\r\n }\r\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\r\n }\r\n }\r\n if (styleData.t === 1) {\r\n if (itemData.e._mdf || isFirstFrame) {\r\n gfill.setAttribute('x2', pt2[0]);\r\n gfill.setAttribute('y2', pt2[1]);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('x2', pt2[0]);\r\n itemData.of.setAttribute('y2', pt2[1]);\r\n }\r\n }\r\n } else {\r\n var rad;\r\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n gfill.setAttribute('r', rad);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('r', rad);\r\n }\r\n }\r\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\r\n if (!rad) {\r\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n }\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n gfill.setAttribute('fx', x);\r\n gfill.setAttribute('fy', y);\r\n if (hasOpacity && !itemData.g._collapsable) {\r\n itemData.of.setAttribute('fx', x);\r\n itemData.of.setAttribute('fy', y);\r\n }\r\n }\r\n // gfill.setAttribute('fy','200');\r\n }\r\n }\r\n\r\n function renderStroke(styleData, itemData, isFirstFrame) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\r\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\r\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\r\n }\r\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\r\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\r\n }\r\n if (itemData.o._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\r\n }\r\n if (itemData.w._mdf || isFirstFrame) {\r\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\r\n if (styleElem.msElem) {\r\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\r\n }\r\n }\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global Matrix */\r\n\r\nfunction ShapeTransformManager() {\r\n this.sequences = {};\r\n this.sequenceList = [];\r\n this.transform_key_count = 0;\r\n}\r\n\r\nShapeTransformManager.prototype = {\r\n addTransformSequence: function (transforms) {\r\n var i;\r\n var len = transforms.length;\r\n var key = '_';\r\n for (i = 0; i < len; i += 1) {\r\n key += transforms[i].transform.key + '_';\r\n }\r\n var sequence = this.sequences[key];\r\n if (!sequence) {\r\n sequence = {\r\n transforms: [].concat(transforms),\r\n finalTransform: new Matrix(),\r\n _mdf: false,\r\n };\r\n this.sequences[key] = sequence;\r\n this.sequenceList.push(sequence);\r\n }\r\n return sequence;\r\n },\r\n processSequence: function (sequence, isFirstFrame) {\r\n var i = 0;\r\n var len = sequence.transforms.length;\r\n var _mdf = isFirstFrame;\r\n while (i < len && !isFirstFrame) {\r\n if (sequence.transforms[i].transform.mProps._mdf) {\r\n _mdf = true;\r\n break;\r\n }\r\n i += 1;\r\n }\r\n if (_mdf) {\r\n var props;\r\n sequence.finalTransform.reset();\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n props = sequence.transforms[i].transform.mProps.v.props;\r\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\r\n }\r\n }\r\n sequence._mdf = _mdf;\r\n },\r\n processSequences: function (isFirstFrame) {\r\n var i;\r\n var len = this.sequenceList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.processSequence(this.sequenceList[i], isFirstFrame);\r\n }\r\n },\r\n getNewKey: function () {\r\n this.transform_key_count += 1;\r\n return '_' + this.transform_key_count;\r\n },\r\n};\r\n\r\n/* global ShapePropertyFactory, SVGShapeData */\r\n\r\nfunction CVShapeData(element, data, styles, transformsManager) {\r\n this.styledShapes = [];\r\n this.tr = [0, 0, 0, 0, 0, 0];\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\r\n var i;\r\n var len = styles.length;\r\n var styledShape;\r\n for (i = 0; i < len; i += 1) {\r\n if (!styles[i].closed) {\r\n styledShape = {\r\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\r\n trNodes: [],\r\n };\r\n this.styledShapes.push(styledShape);\r\n styles[i].elements.push(styledShape);\r\n }\r\n }\r\n}\r\n\r\nCVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\r\n\r\n/* global LayerExpressionInterface, EffectsExpressionInterface, CompExpressionInterface, ShapeExpressionInterface,\r\nTextExpressionInterface, getBlendMode,createElementID, EffectsManager */\r\n\r\nfunction BaseElement() {\r\n}\r\n\r\nBaseElement.prototype = {\r\n checkMasks: function () {\r\n if (!this.data.hasMask) {\r\n return false;\r\n }\r\n var i = 0;\r\n var len = this.data.masksProperties.length;\r\n while (i < len) {\r\n if ((this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false)) {\r\n return true;\r\n }\r\n i += 1;\r\n }\r\n return false;\r\n },\r\n initExpressions: function () {\r\n this.layerInterface = LayerExpressionInterface(this);\r\n if (this.data.hasMask && this.maskManager) {\r\n this.layerInterface.registerMaskInterface(this.maskManager);\r\n }\r\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\r\n this.layerInterface.registerEffectsInterface(effectsInterface);\r\n\r\n if (this.data.ty === 0 || this.data.xt) {\r\n this.compInterface = CompExpressionInterface(this);\r\n } else if (this.data.ty === 4) {\r\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\r\n this.layerInterface.content = this.layerInterface.shapeInterface;\r\n } else if (this.data.ty === 5) {\r\n this.layerInterface.textInterface = TextExpressionInterface(this);\r\n this.layerInterface.text = this.layerInterface.textInterface;\r\n }\r\n },\r\n setBlendMode: function () {\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n var elem = this.baseElement || this.layerElement;\r\n\r\n elem.style['mix-blend-mode'] = blendModeValue;\r\n },\r\n initBaseData: function (data, globalData, comp) {\r\n this.globalData = globalData;\r\n this.comp = comp;\r\n this.data = data;\r\n this.layerId = createElementID();\r\n\r\n // Stretch factor for old animations missing this property.\r\n if (!this.data.sr) {\r\n this.data.sr = 1;\r\n }\r\n // effects manager\r\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\r\n },\r\n getType: function () {\r\n return this.type;\r\n },\r\n sourceRectAtTime: function () {},\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement */\r\n\r\nfunction NullElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initFrame();\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n}\r\n\r\nNullElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nNullElement.prototype.renderFrame = function () {\r\n};\r\n\r\nNullElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nNullElement.prototype.destroy = function () {\r\n};\r\n\r\nNullElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nNullElement.prototype.hide = function () {\r\n};\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\r\n\r\n/* global filtersFactory, featureSupport, filtersFactory, createElementID, createNS, MaskElement, SVGEffects, locationHref */\r\n\r\nfunction SVGBaseElement() {\r\n}\r\n\r\nSVGBaseElement.prototype = {\r\n initRendererElement: function () {\r\n this.layerElement = createNS('g');\r\n },\r\n createContainerElements: function () {\r\n this.matteElement = createNS('g');\r\n this.transformedElement = this.layerElement;\r\n this.maskedElement = this.layerElement;\r\n this._sizeChanged = false;\r\n var layerElementParent = null;\r\n // If this layer acts as a mask for the following layer\r\n var filId;\r\n var fil;\r\n var gg;\r\n if (this.data.td) {\r\n if (this.data.td == 3 || this.data.td == 1) { // eslint-disable-line eqeqeq\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', this.layerId);\r\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\r\n masker.appendChild(this.layerElement);\r\n layerElementParent = masker;\r\n this.globalData.defs.appendChild(masker);\r\n // This is only for IE and Edge when mask if of type alpha\r\n if (!featureSupport.maskType && this.data.td == 1) { // eslint-disable-line eqeqeq\r\n masker.setAttribute('mask-type', 'luminance');\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n this.globalData.defs.appendChild(fil);\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n masker.appendChild(gg);\r\n gg.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n } else if (this.data.td == 2) { // eslint-disable-line eqeqeq\r\n var maskGroup = createNS('mask');\r\n maskGroup.setAttribute('id', this.layerId);\r\n maskGroup.setAttribute('mask-type', 'alpha');\r\n var maskGrouper = createNS('g');\r\n maskGroup.appendChild(maskGrouper);\r\n filId = createElementID();\r\n fil = filtersFactory.createFilter(filId);\r\n /// /\r\n\r\n // This solution doesn't work on Android when meta tag with viewport attribute is set\r\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\r\n /// /\r\n var feCTr = createNS('feComponentTransfer');\r\n feCTr.setAttribute('in', 'SourceGraphic');\r\n fil.appendChild(feCTr);\r\n var feFunc = createNS('feFuncA');\r\n feFunc.setAttribute('type', 'table');\r\n feFunc.setAttribute('tableValues', '1.0 0.0');\r\n feCTr.appendChild(feFunc);\r\n /// /\r\n this.globalData.defs.appendChild(fil);\r\n var alphaRect = createNS('rect');\r\n alphaRect.setAttribute('width', this.comp.data.w);\r\n alphaRect.setAttribute('height', this.comp.data.h);\r\n alphaRect.setAttribute('x', '0');\r\n alphaRect.setAttribute('y', '0');\r\n alphaRect.setAttribute('fill', '#ffffff');\r\n alphaRect.setAttribute('opacity', '0');\r\n maskGrouper.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n maskGrouper.appendChild(alphaRect);\r\n maskGrouper.appendChild(this.layerElement);\r\n layerElementParent = maskGrouper;\r\n if (!featureSupport.maskType) {\r\n maskGroup.setAttribute('mask-type', 'luminance');\r\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\r\n gg = createNS('g');\r\n maskGrouper.appendChild(alphaRect);\r\n gg.appendChild(this.layerElement);\r\n layerElementParent = gg;\r\n maskGrouper.appendChild(gg);\r\n }\r\n this.globalData.defs.appendChild(maskGroup);\r\n }\r\n } else if (this.data.tt) {\r\n this.matteElement.appendChild(this.layerElement);\r\n layerElementParent = this.matteElement;\r\n this.baseElement = this.matteElement;\r\n } else {\r\n this.baseElement = this.layerElement;\r\n }\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\r\n if (this.data.ty === 0 && !this.data.hd) {\r\n var cp = createNS('clipPath');\r\n var pt = createNS('path');\r\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\r\n var clipId = createElementID();\r\n cp.setAttribute('id', clipId);\r\n cp.appendChild(pt);\r\n this.globalData.defs.appendChild(cp);\r\n\r\n if (this.checkMasks()) {\r\n var cpGroup = createNS('g');\r\n cpGroup.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n cpGroup.appendChild(this.layerElement);\r\n this.transformedElement = cpGroup;\r\n if (layerElementParent) {\r\n layerElementParent.appendChild(this.transformedElement);\r\n } else {\r\n this.baseElement = this.transformedElement;\r\n }\r\n } else {\r\n this.layerElement.setAttribute('clip-path', 'url(' + locationHref + '#' + clipId + ')');\r\n }\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n if (this.finalTransform._matMdf) {\r\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\r\n }\r\n if (this.finalTransform._opMdf) {\r\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\r\n }\r\n },\r\n destroyBaseElement: function () {\r\n this.layerElement = null;\r\n this.matteElement = null;\r\n this.maskManager.destroy();\r\n },\r\n getBaseElement: function () {\r\n if (this.data.hd) {\r\n return null;\r\n }\r\n return this.baseElement;\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n this.renderableEffectsManager = new SVGEffects(this);\r\n },\r\n setMatte: function (id) {\r\n if (!this.matteElement) {\r\n return;\r\n }\r\n this.matteElement.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n },\r\n};\r\n\r\n/* global ProcessedElement */\r\n\r\nfunction IShapeElement() {\r\n}\r\n\r\nIShapeElement.prototype = {\r\n addShapeToModifiers: function (data) {\r\n var i;\r\n var len = this.shapeModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapeModifiers[i].addShape(data);\r\n }\r\n },\r\n isShapeInAnimatedModifiers: function (data) {\r\n var i = 0;\r\n var len = this.shapeModifiers.length;\r\n while (i < len) {\r\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n renderModifiers: function () {\r\n if (!this.shapeModifiers.length) {\r\n return;\r\n }\r\n var i;\r\n var len = this.shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.shapes[i].sh.reset();\r\n }\r\n\r\n len = this.shapeModifiers.length;\r\n var shouldBreakProcess;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\r\n // workaround to fix cases where a repeater resets the shape so the following processes get called twice\r\n // TODO: find a better solution for this\r\n if (shouldBreakProcess) {\r\n break;\r\n }\r\n }\r\n },\r\n lcEnum: {\r\n 1: 'butt',\r\n 2: 'round',\r\n 3: 'square',\r\n },\r\n ljEnum: {\r\n 1: 'miter',\r\n 2: 'round',\r\n 3: 'bevel',\r\n },\r\n searchProcessedElement: function (elem) {\r\n var elements = this.processedElements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i].elem === elem) {\r\n return elements[i].pos;\r\n }\r\n i += 1;\r\n }\r\n return 0;\r\n },\r\n addProcessedElement: function (elem, pos) {\r\n var elements = this.processedElements;\r\n var i = elements.length;\r\n while (i) {\r\n i -= 1;\r\n if (elements[i].elem === elem) {\r\n elements[i].pos = pos;\r\n return;\r\n }\r\n }\r\n elements.push(new ProcessedElement(elem, pos));\r\n },\r\n prepareFrame: function (num) {\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n },\r\n};\r\n\r\n/* global TextProperty, TextAnimatorProperty, buildShapeString, LetterProps */\r\n\r\nfunction ITextElement() {\r\n}\r\n\r\nITextElement.prototype.initElement = function (data, globalData, comp) {\r\n this.lettersChangedFlag = true;\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\r\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\r\n this.initTransform(data, globalData, comp);\r\n this.initHierarchy();\r\n this.initRenderable();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n this.createContent();\r\n this.hide();\r\n this.textAnimator.searchProperties(this.dynamicProperties);\r\n};\r\n\r\nITextElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\r\n this.buildNewText();\r\n this.textProperty._isFirstFrame = false;\r\n this.textProperty._mdf = false;\r\n }\r\n};\r\n\r\nITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\r\n var j;\r\n var jLen = shapes.length;\r\n var pathNodes;\r\n var shapeStr = '';\r\n for (j = 0; j < jLen; j += 1) {\r\n pathNodes = shapes[j].ks.k;\r\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\r\n }\r\n return shapeStr;\r\n};\r\n\r\nITextElement.prototype.updateDocumentData = function (newData, index) {\r\n this.textProperty.updateDocumentData(newData, index);\r\n};\r\n\r\nITextElement.prototype.canResizeFont = function (_canResize) {\r\n this.textProperty.canResizeFont(_canResize);\r\n};\r\n\r\nITextElement.prototype.setMinimumFontSize = function (_fontSize) {\r\n this.textProperty.setMinimumFontSize(_fontSize);\r\n};\r\n\r\nITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\r\n if (documentData.ps) {\r\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\r\n }\r\n matrixHelper.translate(0, -documentData.ls, 0);\r\n switch (documentData.j) {\r\n case 1:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\r\n break;\r\n case 2:\r\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\r\n break;\r\n default:\r\n break;\r\n }\r\n matrixHelper.translate(xPos, yPos, 0);\r\n};\r\n\r\nITextElement.prototype.buildColor = function (colorData) {\r\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\r\n};\r\n\r\nITextElement.prototype.emptyProp = new LetterProps();\r\n\r\nITextElement.prototype.destroy = function () {\r\n\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement */\r\n\r\nfunction ICompElement() {}\r\n\r\nextendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\r\n\r\nICompElement.prototype.initElement = function (data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initTransform(data, globalData, comp);\r\n this.initRenderable();\r\n this.initHierarchy();\r\n this.initRendererElement();\r\n this.createContainerElements();\r\n this.createRenderableComponents();\r\n if (this.data.xt || !globalData.progressiveLoad) {\r\n this.buildAllItems();\r\n }\r\n this.hide();\r\n};\r\n\r\n/* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n}; */\r\n\r\nICompElement.prototype.prepareFrame = function (num) {\r\n this._mdf = false;\r\n this.prepareRenderableFrame(num);\r\n this.prepareProperties(num, this.isInRange);\r\n if (!this.isInRange && !this.data.xt) {\r\n return;\r\n }\r\n\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n if (timeRemapped === this.data.op) {\r\n timeRemapped = this.data.op - 1;\r\n }\r\n this.renderedFrame = timeRemapped;\r\n } else {\r\n this.renderedFrame = num / this.data.sr;\r\n }\r\n var i;\r\n var len = this.elements.length;\r\n if (!this.completeLayers) {\r\n this.checkLayers(this.renderedFrame);\r\n }\r\n // This iteration needs to be backwards because of how expressions connect between each other\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\r\n if (this.elements[i]._mdf) {\r\n this._mdf = true;\r\n }\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.renderInnerContent = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.setElements = function (elems) {\r\n this.elements = elems;\r\n};\r\n\r\nICompElement.prototype.getElements = function () {\r\n return this.elements;\r\n};\r\n\r\nICompElement.prototype.destroyElements = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n};\r\n\r\nICompElement.prototype.destroy = function () {\r\n this.destroyElements();\r\n this.destroyBaseElement();\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, createNS */\r\n\r\nfunction IImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n this.sourceRect = {\r\n top: 0, left: 0, width: this.assetData.w, height: this.assetData.h,\r\n };\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\r\n\r\nIImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n\r\n this.innerElem = createNS('image');\r\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\r\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\r\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\r\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n\r\n this.layerElement.appendChild(this.innerElem);\r\n};\r\n\r\nIImageElement.prototype.sourceRectAtTime = function () {\r\n return this.sourceRect;\r\n};\r\n\r\n/* global extendPrototype, IImageElement, createNS */\r\n\r\nfunction ISolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([IImageElement], ISolidElement);\r\n\r\nISolidElement.prototype.createContent = function () {\r\n var rect = createNS('rect');\r\n /// /rect.style.width = this.data.sw;\r\n /// /rect.style.height = this.data.sh;\r\n /// /rect.style.fill = this.data.sc;\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global PropertyFactory, extendPrototype, RenderableElement, BaseElement, FrameElement */\r\n\r\nfunction AudioElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initBaseData(data, globalData, comp);\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n this.audio = this.globalData.audioController.createAudio(assetPath);\r\n this._currentTime = 0;\r\n this.globalData.audioController.addAudio(this);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nAudioElement.prototype.prepareFrame = function (num) {\r\n this.prepareRenderableFrame(num, true);\r\n this.prepareProperties(num, true);\r\n if (!this.tm._placeholder) {\r\n var timeRemapped = this.tm.v;\r\n this._currentTime = timeRemapped;\r\n } else {\r\n this._currentTime = num / this.data.sr;\r\n }\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\r\n\r\nAudioElement.prototype.renderFrame = function () {\r\n if (this.isInRange && this._canPlay) {\r\n if (!this._isPlaying) {\r\n this.audio.play();\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n this._isPlaying = true;\r\n } else if (!this.audio.playing()\r\n || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1\r\n ) {\r\n this.audio.seek(this._currentTime / this.globalData.frameRate);\r\n }\r\n }\r\n};\r\n\r\nAudioElement.prototype.show = function () {\r\n // this.audio.play()\r\n};\r\n\r\nAudioElement.prototype.hide = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n};\r\n\r\nAudioElement.prototype.pause = function () {\r\n this.audio.pause();\r\n this._isPlaying = false;\r\n this._canPlay = false;\r\n};\r\n\r\nAudioElement.prototype.resume = function () {\r\n this._canPlay = true;\r\n};\r\n\r\nAudioElement.prototype.setRate = function (rateValue) {\r\n this.audio.rate(rateValue);\r\n};\r\n\r\nAudioElement.prototype.volume = function (volumeValue) {\r\n this.audio.volume(volumeValue);\r\n};\r\n\r\nAudioElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nAudioElement.prototype.destroy = function () {\r\n};\r\n\r\nAudioElement.prototype.sourceRectAtTime = function () {\r\n};\r\n\r\nAudioElement.prototype.initExpressions = function () {\r\n};\r\n\r\n/* global extendPrototype, RenderableElement, BaseElement, FrameElement, FootageInterface */\r\n\r\nfunction FootageElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initRenderable();\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\r\n this.initBaseData(data, globalData, comp);\r\n}\r\n\r\nFootageElement.prototype.prepareFrame = function () {\r\n};\r\n\r\nextendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\r\n\r\nFootageElement.prototype.getBaseElement = function () {\r\n return null;\r\n};\r\n\r\nFootageElement.prototype.renderFrame = function () {\r\n};\r\n\r\nFootageElement.prototype.destroy = function () {\r\n};\r\n\r\nFootageElement.prototype.initExpressions = function () {\r\n this.layerInterface = FootageInterface(this);\r\n};\r\n\r\nFootageElement.prototype.getFootageData = function () {\r\n return this.footageData;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, SVGRenderer, ICompElement, SVGBaseElement */\r\n\r\nfunction SVGCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = true;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n // this.layerElement = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([SVGRenderer, ICompElement, SVGBaseElement], SVGCompElement);\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createNS */\r\n\r\nfunction SVGTextLottieElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.renderType = 'svg';\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\r\n\r\nSVGTextLottieElement.prototype.createContent = function () {\r\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\r\n this.textContainer = createNS('text');\r\n }\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildTextContents = function (textArray) {\r\n var i = 0;\r\n var len = textArray.length;\r\n var textContents = [];\r\n var currentTextContent = '';\r\n while (i < len) {\r\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\r\n textContents.push(currentTextContent);\r\n currentTextContent = '';\r\n } else {\r\n currentTextContent += textArray[i];\r\n }\r\n i += 1;\r\n }\r\n textContents.push(currentTextContent);\r\n return textContents;\r\n};\r\n\r\nSVGTextLottieElement.prototype.buildNewText = function () {\r\n var i;\r\n var len;\r\n\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\r\n if (documentData.fc) {\r\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\r\n } else {\r\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\r\n }\r\n if (documentData.sc) {\r\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\r\n this.layerElement.setAttribute('stroke-width', documentData.sw);\r\n }\r\n this.layerElement.setAttribute('font-size', documentData.finalSize);\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (fontData.fClass) {\r\n this.layerElement.setAttribute('class', fontData.fClass);\r\n } else {\r\n this.layerElement.setAttribute('font-family', fontData.fFamily);\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n this.layerElement.setAttribute('font-style', fStyle);\r\n this.layerElement.setAttribute('font-weight', fWeight);\r\n }\r\n this.layerElement.setAttribute('aria-label', documentData.t);\r\n\r\n var letters = documentData.l || [];\r\n var usesGlyphs = !!this.globalData.fontManager.chars;\r\n len = letters.length;\r\n\r\n var tSpan;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var singleShape = this.data.singleShape;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n if (singleShape && !usesGlyphs && !documentData.sz) {\r\n var tElement = this.textContainer;\r\n var justify = 'start';\r\n switch (documentData.j) {\r\n case 1:\r\n justify = 'end';\r\n break;\r\n case 2:\r\n justify = 'middle';\r\n break;\r\n default:\r\n justify = 'start';\r\n break;\r\n }\r\n tElement.setAttribute('text-anchor', justify);\r\n tElement.setAttribute('letter-spacing', trackingOffset);\r\n var textContent = this.buildTextContents(documentData.finalText);\r\n len = textContent.length;\r\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\r\n for (i = 0; i < len; i += 1) {\r\n tSpan = this.textSpans[i] || createNS('tspan');\r\n tSpan.textContent = textContent[i];\r\n tSpan.setAttribute('x', 0);\r\n tSpan.setAttribute('y', yPos);\r\n tSpan.style.display = 'inherit';\r\n tElement.appendChild(tSpan);\r\n this.textSpans[i] = tSpan;\r\n yPos += documentData.finalLineHeight;\r\n }\r\n\r\n this.layerElement.appendChild(tElement);\r\n } else {\r\n var cachedSpansLength = this.textSpans.length;\r\n var shapeData;\r\n var charData;\r\n for (i = 0; i < len; i += 1) {\r\n if (!usesGlyphs || !singleShape || i === 0) {\r\n tSpan = cachedSpansLength > i ? this.textSpans[i] : createNS(usesGlyphs ? 'path' : 'text');\r\n if (cachedSpansLength <= i) {\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n this.textSpans[i] = tSpan;\r\n this.layerElement.appendChild(tSpan);\r\n }\r\n tSpan.style.display = 'inherit';\r\n }\r\n\r\n matrixHelper.reset();\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n if (letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n xPos += letters[i].l || 0;\r\n // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\r\n xPos += trackingOffset;\r\n }\r\n if (usesGlyphs) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n if (!singleShape) {\r\n tSpan.setAttribute('d', this.createPathShape(matrixHelper, shapes));\r\n } else {\r\n shapeStr += this.createPathShape(matrixHelper, shapes);\r\n }\r\n } else {\r\n if (singleShape) {\r\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\r\n }\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n }\r\n //\r\n }\r\n if (singleShape && tSpan) {\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n }\r\n while (i < this.textSpans.length) {\r\n this.textSpans[i].style.display = 'none';\r\n i += 1;\r\n }\r\n\r\n this._sizeChanged = true;\r\n};\r\n\r\nSVGTextLottieElement.prototype.sourceRectAtTime = function () {\r\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\r\n this.renderInnerContent();\r\n if (this._sizeChanged) {\r\n this._sizeChanged = false;\r\n var textBox = this.layerElement.getBBox();\r\n this.bbox = {\r\n top: textBox.y,\r\n left: textBox.x,\r\n width: textBox.width,\r\n height: textBox.height,\r\n };\r\n }\r\n return this.bbox;\r\n};\r\n\r\nSVGTextLottieElement.prototype.renderInnerContent = function () {\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\r\n this._sizeChanged = true;\r\n var i;\r\n var len;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n textSpan = this.textSpans[i];\r\n if (renderedLetter._mdf.m) {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n if (renderedLetter._mdf.o) {\r\n textSpan.setAttribute('opacity', renderedLetter.o);\r\n }\r\n if (renderedLetter._mdf.sw) {\r\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter._mdf.sc) {\r\n textSpan.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter._mdf.fc) {\r\n textSpan.setAttribute('fill', renderedLetter.fc);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement,\r\nFrameElement, RenderableDOMElement, Matrix, SVGStyleData, SVGStrokeStyleData, SVGFillStyleData,\r\nSVGGradientFillStyleData, SVGGradientStrokeStyleData, locationHref, getBlendMode, ShapeGroupData,\r\nTransformPropertyFactory, SVGTransformData, ShapePropertyFactory, SVGShapeData, SVGElementsRenderer, ShapeModifiers */\r\n\r\nfunction SVGShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\r\n\r\nSVGShapeElement.prototype.initSecondaryElement = function () {\r\n};\r\n\r\nSVGShapeElement.prototype.identityMatrix = new Matrix();\r\n\r\nSVGShapeElement.prototype.buildExpressionInterface = function () {};\r\n\r\nSVGShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n};\r\n\r\n/*\r\nThis method searches for multiple shapes that affect a single element and one of them is animated\r\n*/\r\nSVGShapeElement.prototype.filterUniqueShapes = function () {\r\n var i;\r\n var len = this.shapes.length;\r\n var shape;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n var style;\r\n var tempShapes = [];\r\n var areAnimated = false;\r\n for (j = 0; j < jLen; j += 1) {\r\n style = this.stylesList[j];\r\n areAnimated = false;\r\n tempShapes.length = 0;\r\n for (i = 0; i < len; i += 1) {\r\n shape = this.shapes[i];\r\n if (shape.styles.indexOf(style) !== -1) {\r\n tempShapes.push(shape);\r\n areAnimated = shape._isAnimated || areAnimated;\r\n }\r\n }\r\n if (tempShapes.length > 1 && areAnimated) {\r\n this.setShapesAsAnimated(tempShapes);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\r\n var i;\r\n var len = shapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n shapes[i].setAsAnimated();\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.createStyleElement = function (data, level) {\r\n // TODO: prevent drawing of hidden styles\r\n var elementData;\r\n var styleOb = new SVGStyleData(data, level);\r\n\r\n var pathElement = styleOb.pElem;\r\n if (data.ty === 'st') {\r\n elementData = new SVGStrokeStyleData(this, data, styleOb);\r\n } else if (data.ty === 'fl') {\r\n elementData = new SVGFillStyleData(this, data, styleOb);\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\r\n elementData = new GradientConstructor(this, data, styleOb);\r\n this.globalData.defs.appendChild(elementData.gf);\r\n if (elementData.maskId) {\r\n this.globalData.defs.appendChild(elementData.ms);\r\n this.globalData.defs.appendChild(elementData.of);\r\n pathElement.setAttribute('mask', 'url(' + locationHref + '#' + elementData.maskId + ')');\r\n }\r\n }\r\n\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n pathElement.setAttribute('stroke-linecap', this.lcEnum[data.lc] || 'round');\r\n pathElement.setAttribute('stroke-linejoin', this.ljEnum[data.lj] || 'round');\r\n pathElement.setAttribute('fill-opacity', '0');\r\n if (data.lj === 1) {\r\n pathElement.setAttribute('stroke-miterlimit', data.ml);\r\n }\r\n }\r\n\r\n if (data.r === 2) {\r\n pathElement.setAttribute('fill-rule', 'evenodd');\r\n }\r\n\r\n if (data.ln) {\r\n pathElement.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n pathElement.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n this.stylesList.push(styleOb);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createGroupElement = function (data) {\r\n var elementData = new ShapeGroupData();\r\n if (data.ln) {\r\n elementData.gr.setAttribute('id', data.ln);\r\n }\r\n if (data.cl) {\r\n elementData.gr.setAttribute('class', data.cl);\r\n }\r\n if (data.bm) {\r\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\r\n }\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createTransformElement = function (data, container) {\r\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\r\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\r\n var ty = 4;\r\n if (data.ty === 'rc') {\r\n ty = 5;\r\n } else if (data.ty === 'el') {\r\n ty = 6;\r\n } else if (data.ty === 'sr') {\r\n ty = 7;\r\n }\r\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\r\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n this.addToAnimatedContents(data, elementData);\r\n return elementData;\r\n};\r\n\r\nSVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\r\n var i = 0;\r\n var len = this.animatedContents.length;\r\n while (i < len) {\r\n if (this.animatedContents[i].element === element) {\r\n return;\r\n }\r\n i += 1;\r\n }\r\n this.animatedContents.push({\r\n fn: SVGElementsRenderer.createRenderFunction(data),\r\n element: element,\r\n data: data,\r\n });\r\n};\r\n\r\nSVGShapeElement.prototype.setElementStyles = function (elementData) {\r\n var arr = elementData.styles;\r\n var j;\r\n var jLen = this.stylesList.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (!this.stylesList[j].closed) {\r\n arr.push(this.stylesList[j]);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\r\n this.filterUniqueShapes();\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n};\r\n\r\nSVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\r\n var ownTransformers = [].concat(transformers);\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var currentTransform;\r\n var modifier;\r\n var processedPos;\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._render = render;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], level);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n if (arr[i]._render) {\r\n container.appendChild(itemsData[i].style.pElem);\r\n }\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\r\n if (arr[i]._render) {\r\n container.appendChild(itemsData[i].gr);\r\n }\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createTransformElement(arr[i], container);\r\n }\r\n currentTransform = itemsData[i].transform;\r\n ownTransformers.push(currentTransform);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\r\n }\r\n this.setElementStyles(itemsData[i]);\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n render = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n len = ownStyles.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownStyles[i].closed = true;\r\n }\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderInnerContent = function () {\r\n this.renderModifiers();\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.stylesList[i].reset();\r\n }\r\n this.renderShape();\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\r\n if (this.stylesList[i].msElem) {\r\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\r\n // Adding M0 0 fixes same mask bug on all browsers\r\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\r\n }\r\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.renderShape = function () {\r\n var i;\r\n var len = this.animatedContents.length;\r\n var animatedContent;\r\n for (i = 0; i < len; i += 1) {\r\n animatedContent = this.animatedContents[i];\r\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\r\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\r\n }\r\n }\r\n};\r\n\r\nSVGShapeElement.prototype.destroy = function () {\r\n this.destroyBaseElement();\r\n this.shapesData = null;\r\n this.itemsData = null;\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTintFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f2');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n if (filterManager.effectElements[2].p.v !== 100 || filterManager.effectElements[2].p.k) {\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'f2');\r\n feMerge.appendChild(feMergeNode);\r\n }\r\n}\r\n\r\nSVGTintFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var colorBlack = this.filterManager.effectElements[0].p.v;\r\n var colorWhite = this.filterManager.effectElements[1].p.v;\r\n var opacity = this.filterManager.effectElements[2].p.v / 100;\r\n this.matrixFilter.setAttribute('values', (colorWhite[0] - colorBlack[0]) + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGFillFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\r\n filter.appendChild(feColorMatrix);\r\n this.matrixFilter = feColorMatrix;\r\n}\r\nSVGFillFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color = this.filterManager.effectElements[2].p.v;\r\n var opacity = this.filterManager.effectElements[6].p.v;\r\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGGaussianBlurEffect(filter, filterManager) {\r\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\r\n filter.setAttribute('x', '-100%');\r\n filter.setAttribute('y', '-100%');\r\n filter.setAttribute('width', '300%');\r\n filter.setAttribute('height', '300%');\r\n\r\n this.filterManager = filterManager;\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n filter.appendChild(feGaussianBlur);\r\n this.feGaussianBlur = feGaussianBlur;\r\n}\r\n\r\nSVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n // Empirical value, matching AE's blur appearance.\r\n var kBlurrinessToSigma = 0.3;\r\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\r\n\r\n // Dimensions mapping:\r\n //\r\n // 1 -> horizontal & vertical\r\n // 2 -> horizontal only\r\n // 3 -> vertical only\r\n //\r\n var dimensions = this.filterManager.effectElements[1].p.v;\r\n var sigmaX = (dimensions == 3) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n var sigmaY = (dimensions == 2) ? 0 : sigma; // eslint-disable-line eqeqeq\r\n\r\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\r\n\r\n // Repeat edges mapping:\r\n //\r\n // 0 -> off -> duplicate\r\n // 1 -> on -> wrap\r\n var edgeMode = (this.filterManager.effectElements[2].p.v == 1) ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\r\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\r\n }\r\n};\r\n\r\n/* global createNS, createElementID, locationHref, bmFloor */\r\n\r\nfunction SVGStrokeEffect(elem, filterManager) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.elem = elem;\r\n this.paths = [];\r\n}\r\n\r\nSVGStrokeEffect.prototype.initialize = function () {\r\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n var path;\r\n var groupPath;\r\n var i;\r\n var len;\r\n if (this.filterManager.effectElements[1].p.v === 1) {\r\n len = this.elem.maskManager.masksProperties.length;\r\n i = 0;\r\n } else {\r\n i = this.filterManager.effectElements[0].p.v - 1;\r\n len = i + 1;\r\n }\r\n groupPath = createNS('g');\r\n groupPath.setAttribute('fill', 'none');\r\n groupPath.setAttribute('stroke-linecap', 'round');\r\n groupPath.setAttribute('stroke-dashoffset', 1);\r\n for (i; i < len; i += 1) {\r\n path = createNS('path');\r\n groupPath.appendChild(path);\r\n this.paths.push({ p: path, m: i });\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 3) {\r\n var mask = createNS('mask');\r\n var id = createElementID();\r\n mask.setAttribute('id', id);\r\n mask.setAttribute('mask-type', 'alpha');\r\n mask.appendChild(groupPath);\r\n this.elem.globalData.defs.appendChild(mask);\r\n var g = createNS('g');\r\n g.setAttribute('mask', 'url(' + locationHref + '#' + id + ')');\r\n while (elemChildren[0]) {\r\n g.appendChild(elemChildren[0]);\r\n }\r\n this.elem.layerElement.appendChild(g);\r\n this.masker = mask;\r\n groupPath.setAttribute('stroke', '#fff');\r\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (this.filterManager.effectElements[10].p.v === 2) {\r\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\r\n while (elemChildren.length) {\r\n this.elem.layerElement.removeChild(elemChildren[0]);\r\n }\r\n }\r\n this.elem.layerElement.appendChild(groupPath);\r\n this.elem.layerElement.removeAttribute('mask');\r\n groupPath.setAttribute('stroke', '#fff');\r\n }\r\n this.initialized = true;\r\n this.pathMasker = groupPath;\r\n};\r\n\r\nSVGStrokeEffect.prototype.renderFrame = function (forceRender) {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n var i;\r\n var len = this.paths.length;\r\n var mask;\r\n var path;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.paths[i].m !== -1) {\r\n mask = this.elem.maskManager.viewData[this.paths[i].m];\r\n path = this.paths[i].p;\r\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\r\n path.setAttribute('d', mask.lastPath);\r\n }\r\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\r\n var dasharrayValue;\r\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\r\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\r\n var l = path.getTotalLength();\r\n dasharrayValue = '0 0 0 ' + l * s + ' ';\r\n var lineLength = l * (e - s);\r\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n var units = Math.floor(lineLength / segment);\r\n var j;\r\n for (j = 0; j < units; j += 1) {\r\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\r\n }\r\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\r\n } else {\r\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\r\n }\r\n path.setAttribute('stroke-dasharray', dasharrayValue);\r\n }\r\n }\r\n }\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\r\n }\r\n\r\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\r\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\r\n }\r\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\r\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\r\n var color = this.filterManager.effectElements[3].p.v;\r\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\r\n }\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGTritoneFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\r\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\r\n feColorMatrix.setAttribute('result', 'f1');\r\n filter.appendChild(feColorMatrix);\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.matrixFilter = feComponentTransfer;\r\n var feFuncR = createNS('feFuncR');\r\n feFuncR.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncR);\r\n this.feFuncR = feFuncR;\r\n var feFuncG = createNS('feFuncG');\r\n feFuncG.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncG);\r\n this.feFuncG = feFuncG;\r\n var feFuncB = createNS('feFuncB');\r\n feFuncB.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFuncB);\r\n this.feFuncB = feFuncB;\r\n}\r\n\r\nSVGTritoneFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var color1 = this.filterManager.effectElements[0].p.v;\r\n var color2 = this.filterManager.effectElements[1].p.v;\r\n var color3 = this.filterManager.effectElements[2].p.v;\r\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\r\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\r\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\r\n this.feFuncR.setAttribute('tableValues', tableR);\r\n this.feFuncG.setAttribute('tableValues', tableG);\r\n this.feFuncB.setAttribute('tableValues', tableB);\r\n // var opacity = this.filterManager.effectElements[2].p.v/100;\r\n // this.matrixFilter.setAttribute('values',(colorWhite[0]- colorBlack[0])+' 0 0 0 '+ colorBlack[0] +' '+ (colorWhite[1]- colorBlack[1]) +' 0 0 0 '+ colorBlack[1] +' '+ (colorWhite[2]- colorBlack[2]) +' 0 0 0 '+ colorBlack[2] +' 0 0 0 ' + opacity + ' 0');\r\n }\r\n};\r\n\r\n/* global createNS */\r\n\r\nfunction SVGProLevelsFilter(filter, filterManager) {\r\n this.filterManager = filterManager;\r\n var effectElements = this.filterManager.effectElements;\r\n var feComponentTransfer = createNS('feComponentTransfer');\r\n\r\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\r\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\r\n }\r\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\r\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\r\n }\r\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\r\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\r\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\r\n }\r\n\r\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n feComponentTransfer = createNS('feComponentTransfer');\r\n }\r\n\r\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\r\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\r\n filter.appendChild(feComponentTransfer);\r\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\r\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\r\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\r\n }\r\n}\r\n\r\nSVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\r\n var feFunc = createNS(type);\r\n feFunc.setAttribute('type', 'table');\r\n feComponentTransfer.appendChild(feFunc);\r\n return feFunc;\r\n};\r\n\r\nSVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\r\n var cnt = 0;\r\n var segments = 256;\r\n var perc;\r\n var min = Math.min(inputBlack, inputWhite);\r\n var max = Math.max(inputBlack, inputWhite);\r\n var table = Array.call(null, { length: segments });\r\n var colorValue;\r\n var pos = 0;\r\n var outputDelta = outputWhite - outputBlack;\r\n var inputDelta = inputWhite - inputBlack;\r\n while (cnt <= 256) {\r\n perc = cnt / 256;\r\n if (perc <= min) {\r\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\r\n } else if (perc >= max) {\r\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\r\n } else {\r\n colorValue = (outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma));\r\n }\r\n table[pos] = colorValue;\r\n pos += 1;\r\n cnt += 256 / (segments - 1);\r\n }\r\n return table.join(' ');\r\n};\r\n\r\nSVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n var val;\r\n var effectElements = this.filterManager.effectElements;\r\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\r\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\r\n this.feFuncRComposed.setAttribute('tableValues', val);\r\n this.feFuncGComposed.setAttribute('tableValues', val);\r\n this.feFuncBComposed.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\r\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\r\n this.feFuncR.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\r\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\r\n this.feFuncG.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\r\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\r\n this.feFuncB.setAttribute('tableValues', val);\r\n }\r\n\r\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\r\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\r\n this.feFuncA.setAttribute('tableValues', val);\r\n }\r\n }\r\n};\r\n\r\n/* global createNS, rgbToHex, degToRads */\r\n\r\nfunction SVGDropShadowEffect(filter, filterManager) {\r\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\r\n filter.setAttribute('x', filterSize.x);\r\n filter.setAttribute('y', filterSize.y);\r\n filter.setAttribute('width', filterSize.width);\r\n filter.setAttribute('height', filterSize.height);\r\n this.filterManager = filterManager;\r\n\r\n var feGaussianBlur = createNS('feGaussianBlur');\r\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\r\n feGaussianBlur.setAttribute('result', 'drop_shadow_1');\r\n feGaussianBlur.setAttribute('stdDeviation', '0');\r\n this.feGaussianBlur = feGaussianBlur;\r\n filter.appendChild(feGaussianBlur);\r\n\r\n var feOffset = createNS('feOffset');\r\n feOffset.setAttribute('dx', '25');\r\n feOffset.setAttribute('dy', '0');\r\n feOffset.setAttribute('in', 'drop_shadow_1');\r\n feOffset.setAttribute('result', 'drop_shadow_2');\r\n this.feOffset = feOffset;\r\n filter.appendChild(feOffset);\r\n var feFlood = createNS('feFlood');\r\n feFlood.setAttribute('flood-color', '#00ff00');\r\n feFlood.setAttribute('flood-opacity', '1');\r\n feFlood.setAttribute('result', 'drop_shadow_3');\r\n this.feFlood = feFlood;\r\n filter.appendChild(feFlood);\r\n\r\n var feComposite = createNS('feComposite');\r\n feComposite.setAttribute('in', 'drop_shadow_3');\r\n feComposite.setAttribute('in2', 'drop_shadow_2');\r\n feComposite.setAttribute('operator', 'in');\r\n feComposite.setAttribute('result', 'drop_shadow_4');\r\n filter.appendChild(feComposite);\r\n\r\n var feMerge = createNS('feMerge');\r\n filter.appendChild(feMerge);\r\n var feMergeNode;\r\n feMergeNode = createNS('feMergeNode');\r\n feMerge.appendChild(feMergeNode);\r\n feMergeNode = createNS('feMergeNode');\r\n feMergeNode.setAttribute('in', 'SourceGraphic');\r\n this.feMergeNode = feMergeNode;\r\n this.feMerge = feMerge;\r\n this.originalNodeAdded = false;\r\n feMerge.appendChild(feMergeNode);\r\n}\r\n\r\nSVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\r\n if (forceRender || this.filterManager._mdf) {\r\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\r\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\r\n }\r\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\r\n var col = this.filterManager.effectElements[0].p.v;\r\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\r\n }\r\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\r\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\r\n }\r\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\r\n var distance = this.filterManager.effectElements[3].p.v;\r\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\r\n var x = distance * Math.cos(angle);\r\n var y = distance * Math.sin(angle);\r\n this.feOffset.setAttribute('dx', x);\r\n this.feOffset.setAttribute('dy', y);\r\n }\r\n /* if(forceRender || this.filterManager.effectElements[5].p._mdf){\r\n if(this.filterManager.effectElements[5].p.v === 1 && this.originalNodeAdded) {\r\n this.feMerge.removeChild(this.feMergeNode);\r\n this.originalNodeAdded = false;\r\n } else if(this.filterManager.effectElements[5].p.v === 0 && !this.originalNodeAdded) {\r\n this.feMerge.appendChild(this.feMergeNode);\r\n this.originalNodeAdded = true;\r\n }\r\n } */\r\n }\r\n};\r\n\r\n/* global createElementID, createNS */\r\n\r\nvar _svgMatteSymbols = [];\r\n\r\nfunction SVGMatte3Effect(filterElem, filterManager, elem) {\r\n this.initialized = false;\r\n this.filterManager = filterManager;\r\n this.filterElem = filterElem;\r\n this.elem = elem;\r\n elem.matteElement = createNS('g');\r\n elem.matteElement.appendChild(elem.layerElement);\r\n elem.matteElement.appendChild(elem.transformedElement);\r\n elem.baseElement = elem.matteElement;\r\n}\r\n\r\nSVGMatte3Effect.prototype.findSymbol = function (mask) {\r\n var i = 0;\r\n var len = _svgMatteSymbols.length;\r\n while (i < len) {\r\n if (_svgMatteSymbols[i] === mask) {\r\n return _svgMatteSymbols[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nSVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\r\n var parentNode = mask.layerElement.parentNode;\r\n if (!parentNode) {\r\n return;\r\n }\r\n var children = parentNode.children;\r\n var i = 0;\r\n var len = children.length;\r\n while (i < len) {\r\n if (children[i] === mask.layerElement) {\r\n break;\r\n }\r\n i += 1;\r\n }\r\n var nextChild;\r\n if (i <= len - 2) {\r\n nextChild = children[i + 1];\r\n }\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n if (nextChild) {\r\n parentNode.insertBefore(useElem, nextChild);\r\n } else {\r\n parentNode.appendChild(useElem);\r\n }\r\n};\r\n\r\nSVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\r\n if (!this.findSymbol(mask)) {\r\n var symbolId = createElementID();\r\n var masker = createNS('mask');\r\n masker.setAttribute('id', mask.layerId);\r\n masker.setAttribute('mask-type', 'alpha');\r\n _svgMatteSymbols.push(mask);\r\n var defs = elem.globalData.defs;\r\n defs.appendChild(masker);\r\n var symbol = createNS('symbol');\r\n symbol.setAttribute('id', symbolId);\r\n this.replaceInParent(mask, symbolId);\r\n symbol.appendChild(mask.layerElement);\r\n defs.appendChild(symbol);\r\n var useElem = createNS('use');\r\n useElem.setAttribute('href', '#' + symbolId);\r\n masker.appendChild(useElem);\r\n mask.data.hd = false;\r\n mask.show();\r\n }\r\n elem.setMatte(mask.layerId);\r\n};\r\n\r\nSVGMatte3Effect.prototype.initialize = function () {\r\n var ind = this.filterManager.effectElements[0].p.v;\r\n var elements = this.elem.comp.elements;\r\n var i = 0;\r\n var len = elements.length;\r\n while (i < len) {\r\n if (elements[i] && elements[i].data.ind === ind) {\r\n this.setElementAsMask(this.elem, elements[i]);\r\n }\r\n i += 1;\r\n }\r\n this.initialized = true;\r\n};\r\n\r\nSVGMatte3Effect.prototype.renderFrame = function () {\r\n if (!this.initialized) {\r\n this.initialize();\r\n }\r\n};\r\n\r\n/* global createElementID, filtersFactory, SVGTintFilter, SVGFillFilter, SVGStrokeEffect, SVGTritoneFilter,\r\nSVGProLevelsFilter, SVGDropShadowEffect, SVGMatte3Effect, SVGGaussianBlurEffect, locationHref */\r\n\r\nfunction SVGEffects(elem) {\r\n var i;\r\n var len = elem.data.ef ? elem.data.ef.length : 0;\r\n var filId = createElementID();\r\n var fil = filtersFactory.createFilter(filId, true);\r\n var count = 0;\r\n this.filters = [];\r\n var filterManager;\r\n for (i = 0; i < len; i += 1) {\r\n filterManager = null;\r\n if (elem.data.ef[i].ty === 20) {\r\n count += 1;\r\n filterManager = new SVGTintFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 21) {\r\n count += 1;\r\n filterManager = new SVGFillFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 22) {\r\n filterManager = new SVGStrokeEffect(elem, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 23) {\r\n count += 1;\r\n filterManager = new SVGTritoneFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 24) {\r\n count += 1;\r\n filterManager = new SVGProLevelsFilter(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 25) {\r\n count += 1;\r\n filterManager = new SVGDropShadowEffect(fil, elem.effectsManager.effectElements[i]);\r\n } else if (elem.data.ef[i].ty === 28) {\r\n // count += 1;\r\n filterManager = new SVGMatte3Effect(fil, elem.effectsManager.effectElements[i], elem);\r\n } else if (elem.data.ef[i].ty === 29) {\r\n count += 1;\r\n filterManager = new SVGGaussianBlurEffect(fil, elem.effectsManager.effectElements[i]);\r\n }\r\n if (filterManager) {\r\n this.filters.push(filterManager);\r\n }\r\n }\r\n if (count) {\r\n elem.globalData.defs.appendChild(fil);\r\n elem.layerElement.setAttribute('filter', 'url(' + locationHref + '#' + filId + ')');\r\n }\r\n if (this.filters.length) {\r\n elem.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nSVGEffects.prototype.renderFrame = function (_isFirstFrame) {\r\n var i;\r\n var len = this.filters.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.filters[i].renderFrame(_isFirstFrame);\r\n }\r\n};\r\n\r\n/* global Matrix, createTypedArray */\r\n\r\nfunction CVContextData() {\r\n this.saved = [];\r\n this.cArrPos = 0;\r\n this.cTr = new Matrix();\r\n this.cO = 1;\r\n var i;\r\n var len = 15;\r\n this.savedOp = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = len;\r\n}\r\n\r\nCVContextData.prototype.duplicate = function () {\r\n var newLength = this._length * 2;\r\n var currentSavedOp = this.savedOp;\r\n this.savedOp = createTypedArray('float32', newLength);\r\n this.savedOp.set(currentSavedOp);\r\n var i = 0;\r\n for (i = this._length; i < newLength; i += 1) {\r\n this.saved[i] = createTypedArray('float32', 16);\r\n }\r\n this._length = newLength;\r\n};\r\n\r\nCVContextData.prototype.reset = function () {\r\n this.cArrPos = 0;\r\n this.cTr.reset();\r\n this.cO = 1;\r\n};\r\n\r\n/* global CVEffects, getBlendMode, CVMaskElement, Matrix */\r\n\r\nfunction CVBaseElement() {\r\n}\r\n\r\nCVBaseElement.prototype = {\r\n createElements: function () {},\r\n initRendererElement: function () {},\r\n createContainerElements: function () {\r\n this.canvasContext = this.globalData.canvasContext;\r\n this.renderableEffectsManager = new CVEffects(this);\r\n },\r\n createContent: function () {},\r\n setBlendMode: function () {\r\n var globalData = this.globalData;\r\n if (globalData.blendMode !== this.data.bm) {\r\n globalData.blendMode = this.data.bm;\r\n var blendModeValue = getBlendMode(this.data.bm);\r\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new CVMaskElement(this.data, this);\r\n },\r\n hideElement: function () {\r\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\r\n this.hidden = true;\r\n }\r\n },\r\n showElement: function () {\r\n if (this.isInRange && !this.isTransparent) {\r\n this.hidden = false;\r\n this._isFirstFrame = true;\r\n this.maskManager._isFirstFrame = true;\r\n }\r\n },\r\n renderFrame: function () {\r\n if (this.hidden || this.data.hd) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.setBlendMode();\r\n var forceRealStack = this.data.ty === 0;\r\n this.globalData.renderer.save(forceRealStack);\r\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\r\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\r\n this.renderInnerContent();\r\n this.globalData.renderer.restore(forceRealStack);\r\n if (this.maskManager.hasMasks) {\r\n this.globalData.renderer.restore(true);\r\n }\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.canvasContext = null;\r\n this.data = null;\r\n this.globalData = null;\r\n this.maskManager.destroy();\r\n },\r\n mHelper: new Matrix(),\r\n};\r\nCVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\r\nCVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement,HierarchyElement, FrameElement,\r\nRenderableElement, SVGShapeElement, IImageElement, createTag */\r\n\r\nfunction CVImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.img = globalData.imageLoader.getAsset(this.assetData);\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\r\n\r\nCVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVImageElement.prototype.createContent = function () {\r\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\r\n var canvas = createTag('canvas');\r\n canvas.width = this.assetData.w;\r\n canvas.height = this.assetData.h;\r\n var ctx = canvas.getContext('2d');\r\n\r\n var imgW = this.img.width;\r\n var imgH = this.img.height;\r\n var imgRel = imgW / imgH;\r\n var canvasRel = this.assetData.w / this.assetData.h;\r\n var widthCrop;\r\n var heightCrop;\r\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\r\n if ((imgRel > canvasRel && par === 'xMidYMid slice') || (imgRel < canvasRel && par !== 'xMidYMid slice')) {\r\n heightCrop = imgH;\r\n widthCrop = heightCrop * canvasRel;\r\n } else {\r\n widthCrop = imgW;\r\n heightCrop = widthCrop / canvasRel;\r\n }\r\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\r\n this.img = canvas;\r\n }\r\n};\r\n\r\nCVImageElement.prototype.renderInnerContent = function () {\r\n this.canvasContext.drawImage(this.img, 0, 0);\r\n};\r\n\r\nCVImageElement.prototype.destroy = function () {\r\n this.img = null;\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, CanvasRenderer, ICompElement, CVBaseElement */\r\n\r\nfunction CVCompElement(data, globalData, comp) {\r\n this.completeLayers = false;\r\n this.layers = data.layers;\r\n this.pendingElements = [];\r\n this.elements = createSizedArray(this.layers.length);\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([CanvasRenderer, ICompElement, CVBaseElement], CVCompElement);\r\n\r\nCVCompElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.beginPath();\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.data.w, 0);\r\n ctx.lineTo(this.data.w, this.data.h);\r\n ctx.lineTo(0, this.data.h);\r\n ctx.lineTo(0, 0);\r\n ctx.clip();\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.completeLayers || this.elements[i]) {\r\n this.elements[i].renderFrame();\r\n }\r\n }\r\n};\r\n\r\nCVCompElement.prototype.destroy = function () {\r\n var i;\r\n var len = this.layers.length;\r\n for (i = len - 1; i >= 0; i -= 1) {\r\n if (this.elements[i]) {\r\n this.elements[i].destroy();\r\n }\r\n }\r\n this.layers = null;\r\n this.elements = null;\r\n};\r\n\r\n/* global createSizedArray, ShapePropertyFactory, MaskElement */\r\n\r\nfunction CVMaskElement(data, element) {\r\n this.data = data;\r\n this.element = element;\r\n this.masksProperties = this.data.masksProperties || [];\r\n this.viewData = createSizedArray(this.masksProperties.length);\r\n var i;\r\n var len = this.masksProperties.length;\r\n var hasMasks = false;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n hasMasks = true;\r\n }\r\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\r\n }\r\n this.hasMasks = hasMasks;\r\n if (hasMasks) {\r\n this.element.addRenderableComponent(this);\r\n }\r\n}\r\n\r\nCVMaskElement.prototype.renderFrame = function () {\r\n if (!this.hasMasks) {\r\n return;\r\n }\r\n var transform = this.element.finalTransform.mat;\r\n var ctx = this.element.canvasContext;\r\n var i;\r\n var len = this.masksProperties.length;\r\n var pt;\r\n var pts;\r\n var data;\r\n ctx.beginPath();\r\n for (i = 0; i < len; i += 1) {\r\n if (this.masksProperties[i].mode !== 'n') {\r\n if (this.masksProperties[i].inv) {\r\n ctx.moveTo(0, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, 0);\r\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, this.element.globalData.compSize.h);\r\n ctx.lineTo(0, 0);\r\n }\r\n data = this.viewData[i].v;\r\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\r\n ctx.moveTo(pt[0], pt[1]);\r\n var j;\r\n var jLen = data._length;\r\n for (j = 1; j < jLen; j += 1) {\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\r\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\r\n }\r\n }\r\n this.element.globalData.renderer.save(true);\r\n ctx.clip();\r\n};\r\n\r\nCVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\r\n\r\nCVMaskElement.prototype.destroy = function () {\r\n this.element = null;\r\n};\r\n\r\n/* global ShapeTransformManager, extendPrototype, BaseElement, TransformElement, CVBaseElement, IShapeElement,\r\nHierarchyElement, FrameElement, RenderableElement, RenderableDOMElement, PropertyFactory, degToRads, GradientProperty,\r\nDashProperty, TransformPropertyFactory, CVShapeData, ShapeModifiers, bmFloor */\r\n\r\nfunction CVShapeElement(data, globalData, comp) {\r\n this.shapes = [];\r\n this.shapesData = data.shapes;\r\n this.stylesList = [];\r\n this.itemsData = [];\r\n this.prevViewData = [];\r\n this.shapeModifiers = [];\r\n this.processedElements = [];\r\n this.transformsManager = new ShapeTransformManager();\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\r\n\r\nCVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\r\n\r\nCVShapeElement.prototype.transformHelper = { opacity: 1, _opMdf: false };\r\n\r\nCVShapeElement.prototype.dashResetter = [];\r\n\r\nCVShapeElement.prototype.createContent = function () {\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n};\r\n\r\nCVShapeElement.prototype.createStyleElement = function (data, transforms) {\r\n var styleElem = {\r\n data: data,\r\n type: data.ty,\r\n preTransforms: this.transformsManager.addTransformSequence(transforms),\r\n transforms: [],\r\n elements: [],\r\n closed: data.hd === true,\r\n };\r\n var elementData = {};\r\n if (data.ty === 'fl' || data.ty === 'st') {\r\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\r\n if (!elementData.c.k) {\r\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\r\n }\r\n } else if (data.ty === 'gf' || data.ty === 'gs') {\r\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\r\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\r\n elementData.h = PropertyFactory.getProp(this, data.h || { k: 0 }, 0, 0.01, this);\r\n elementData.a = PropertyFactory.getProp(this, data.a || { k: 0 }, 0, degToRads, this);\r\n elementData.g = new GradientProperty(this, data.g, this);\r\n }\r\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\r\n if (data.ty === 'st' || data.ty === 'gs') {\r\n styleElem.lc = this.lcEnum[data.lc] || 'round';\r\n styleElem.lj = this.ljEnum[data.lj] || 'round';\r\n if (data.lj == 1) { // eslint-disable-line eqeqeq\r\n styleElem.ml = data.ml;\r\n }\r\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\r\n if (!elementData.w.k) {\r\n styleElem.wi = elementData.w.v;\r\n }\r\n if (data.d) {\r\n var d = new DashProperty(this, data.d, 'canvas', this);\r\n elementData.d = d;\r\n if (!elementData.d.k) {\r\n styleElem.da = elementData.d.dashArray;\r\n styleElem.do = elementData.d.dashoffset[0];\r\n }\r\n }\r\n } else {\r\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\r\n }\r\n this.stylesList.push(styleElem);\r\n elementData.style = styleElem;\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createGroupElement = function () {\r\n var elementData = {\r\n it: [],\r\n prevViewData: [],\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createTransformElement = function (data) {\r\n var elementData = {\r\n transform: {\r\n opacity: 1,\r\n _opMdf: false,\r\n key: this.transformsManager.getNewKey(),\r\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\r\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this),\r\n },\r\n };\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.createShapeElement = function (data) {\r\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\r\n\r\n this.shapes.push(elementData);\r\n this.addShapeToModifiers(elementData);\r\n return elementData;\r\n};\r\n\r\nCVShapeElement.prototype.reloadShapes = function () {\r\n this._isFirstFrame = true;\r\n var i;\r\n var len = this.itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.prevViewData[i] = this.itemsData[i];\r\n }\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\r\n len = this.dynamicProperties.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.dynamicProperties[i].getValue();\r\n }\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n};\r\n\r\nCVShapeElement.prototype.addTransformToStyleList = function (transform) {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.push(transform);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.removeTransformFromStyleList = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (!this.stylesList[i].closed) {\r\n this.stylesList[i].transforms.pop();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.closeStyles = function (styles) {\r\n var i;\r\n var len = styles.length;\r\n for (i = 0; i < len; i += 1) {\r\n styles[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\r\n var i;\r\n var len = arr.length - 1;\r\n var j;\r\n var jLen;\r\n var ownStyles = [];\r\n var ownModifiers = [];\r\n var processedPos;\r\n var modifier;\r\n var currentTransform;\r\n var ownTransforms = [].concat(transforms);\r\n for (i = len; i >= 0; i -= 1) {\r\n processedPos = this.searchProcessedElement(arr[i]);\r\n if (!processedPos) {\r\n arr[i]._shouldRender = shouldRender;\r\n } else {\r\n itemsData[i] = prevViewData[processedPos - 1];\r\n }\r\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\r\n } else {\r\n itemsData[i].style.closed = false;\r\n }\r\n\r\n ownStyles.push(itemsData[i].style);\r\n } else if (arr[i].ty === 'gr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createGroupElement(arr[i]);\r\n } else {\r\n jLen = itemsData[i].it.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\r\n }\r\n }\r\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\r\n } else if (arr[i].ty === 'tr') {\r\n if (!processedPos) {\r\n currentTransform = this.createTransformElement(arr[i]);\r\n itemsData[i] = currentTransform;\r\n }\r\n ownTransforms.push(itemsData[i]);\r\n this.addTransformToStyleList(itemsData[i]);\r\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\r\n if (!processedPos) {\r\n itemsData[i] = this.createShapeElement(arr[i]);\r\n }\r\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n modifier.init(this, arr[i]);\r\n itemsData[i] = modifier;\r\n this.shapeModifiers.push(modifier);\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = false;\r\n }\r\n ownModifiers.push(modifier);\r\n } else if (arr[i].ty === 'rp') {\r\n if (!processedPos) {\r\n modifier = ShapeModifiers.getModifier(arr[i].ty);\r\n itemsData[i] = modifier;\r\n modifier.init(this, arr, i, itemsData);\r\n this.shapeModifiers.push(modifier);\r\n shouldRender = false;\r\n } else {\r\n modifier = itemsData[i];\r\n modifier.closed = true;\r\n }\r\n ownModifiers.push(modifier);\r\n }\r\n this.addProcessedElement(arr[i], i + 1);\r\n }\r\n this.removeTransformFromStyleList();\r\n this.closeStyles(ownStyles);\r\n len = ownModifiers.length;\r\n for (i = 0; i < len; i += 1) {\r\n ownModifiers[i].closed = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderInnerContent = function () {\r\n this.transformHelper.opacity = 1;\r\n this.transformHelper._opMdf = false;\r\n this.renderModifiers();\r\n this.transformsManager.processSequences(this._isFirstFrame);\r\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\r\n};\r\n\r\nCVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\r\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\r\n groupTransform.opacity = parentTransform.opacity;\r\n groupTransform.opacity *= groupTransform.op.v;\r\n groupTransform._opMdf = true;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.drawLayer = function () {\r\n var i;\r\n var len = this.stylesList.length;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var elems;\r\n var nodes;\r\n var renderer = this.globalData.renderer;\r\n var ctx = this.globalData.canvasContext;\r\n var type;\r\n var currentStyle;\r\n for (i = 0; i < len; i += 1) {\r\n currentStyle = this.stylesList[i];\r\n type = currentStyle.type;\r\n\r\n // Skipping style when\r\n // Stroke width equals 0\r\n // style should not be rendered (extra unused repeaters)\r\n // current opacity equals 0\r\n // global opacity equals 0\r\n if (!(((type === 'st' || type === 'gs') && currentStyle.wi === 0) || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\r\n renderer.save();\r\n elems = currentStyle.elements;\r\n if (type === 'st' || type === 'gs') {\r\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\r\n ctx.lineWidth = currentStyle.wi;\r\n ctx.lineCap = currentStyle.lc;\r\n ctx.lineJoin = currentStyle.lj;\r\n ctx.miterLimit = currentStyle.ml || 0;\r\n } else {\r\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\r\n }\r\n renderer.ctxOpacity(currentStyle.coOp);\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.beginPath();\r\n }\r\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\r\n jLen = elems.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n if (type === 'st' || type === 'gs') {\r\n ctx.beginPath();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(currentStyle.da);\r\n ctx.lineDashOffset = currentStyle.do;\r\n }\r\n }\r\n nodes = elems[j].trNodes;\r\n kLen = nodes.length;\r\n\r\n for (k = 0; k < kLen; k += 1) {\r\n if (nodes[k].t === 'm') {\r\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\r\n } else if (nodes[k].t === 'c') {\r\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\r\n } else {\r\n ctx.closePath();\r\n }\r\n }\r\n if (type === 'st' || type === 'gs') {\r\n ctx.stroke();\r\n if (currentStyle.da) {\r\n ctx.setLineDash(this.dashResetter);\r\n }\r\n }\r\n }\r\n if (type !== 'st' && type !== 'gs') {\r\n ctx.fill(currentStyle.r);\r\n }\r\n renderer.restore();\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\r\n var i;\r\n var len = items.length - 1;\r\n var groupTransform;\r\n groupTransform = parentTransform;\r\n for (i = len; i >= 0; i -= 1) {\r\n if (items[i].ty === 'tr') {\r\n groupTransform = data[i].transform;\r\n this.renderShapeTransform(parentTransform, groupTransform);\r\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\r\n this.renderPath(items[i], data[i]);\r\n } else if (items[i].ty === 'fl') {\r\n this.renderFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'st') {\r\n this.renderStroke(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\r\n this.renderGradientFill(items[i], data[i], groupTransform);\r\n } else if (items[i].ty === 'gr') {\r\n this.renderShape(groupTransform, items[i].it, data[i].it);\r\n } else if (items[i].ty === 'tm') {\r\n //\r\n }\r\n }\r\n if (isMain) {\r\n this.drawLayer();\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\r\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\r\n var shapeNodes = styledShape.trNodes;\r\n var paths = shape.paths;\r\n var i;\r\n var len;\r\n var j;\r\n var jLen = paths._length;\r\n shapeNodes.length = 0;\r\n var groupTransformMat = styledShape.transforms.finalTransform;\r\n for (j = 0; j < jLen; j += 1) {\r\n var pathNodes = paths.shapes[j];\r\n if (pathNodes && pathNodes.v) {\r\n len = pathNodes._length;\r\n for (i = 1; i < len; i += 1) {\r\n if (i === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i]),\r\n });\r\n }\r\n if (len === 1) {\r\n shapeNodes.push({\r\n t: 'm',\r\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0),\r\n });\r\n }\r\n if (pathNodes.c && len) {\r\n shapeNodes.push({\r\n t: 'c',\r\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0]),\r\n });\r\n shapeNodes.push({\r\n t: 'z',\r\n });\r\n }\r\n }\r\n }\r\n styledShape.trNodes = shapeNodes;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderPath = function (pathData, itemData) {\r\n if (pathData.hd !== true && pathData._shouldRender) {\r\n var i;\r\n var len = itemData.styledShapes.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\r\n }\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb('\r\n + bmFloor(itemData.c.v[0]) + ','\r\n + bmFloor(itemData.c.v[1]) + ','\r\n + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var grd;\r\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || (styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf))) {\r\n var ctx = this.globalData.canvasContext;\r\n var pt1 = itemData.s.v;\r\n var pt2 = itemData.e.v;\r\n if (styleData.t === 1) {\r\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\r\n } else {\r\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\r\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\r\n\r\n var percent = itemData.h.v;\r\n if (percent >= 1) {\r\n percent = 0.99;\r\n } else if (percent <= -1) {\r\n percent = -0.99;\r\n }\r\n var dist = rad * percent;\r\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\r\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\r\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\r\n }\r\n\r\n var i;\r\n var len = styleData.g.p;\r\n var cValues = itemData.g.c;\r\n var opacity = 1;\r\n\r\n for (i = 0; i < len; i += 1) {\r\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\r\n opacity = itemData.g.o[i * 2 + 1];\r\n }\r\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\r\n }\r\n styleElem.grd = grd;\r\n }\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n};\r\n\r\nCVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\r\n var styleElem = itemData.style;\r\n var d = itemData.d;\r\n if (d && (d._mdf || this._isFirstFrame)) {\r\n styleElem.da = d.dashArray;\r\n styleElem.do = d.dashoffset[0];\r\n }\r\n if (itemData.c._mdf || this._isFirstFrame) {\r\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\r\n }\r\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\r\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\r\n }\r\n if (itemData.w._mdf || this._isFirstFrame) {\r\n styleElem.wi = itemData.w.v;\r\n }\r\n};\r\n\r\nCVShapeElement.prototype.destroy = function () {\r\n this.shapesData = null;\r\n this.globalData = null;\r\n this.canvasContext = null;\r\n this.stylesList.length = 0;\r\n this.itemsData.length = 0;\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement,\r\nSVGShapeElement, IImageElement */\r\n\r\nfunction CVSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\r\n\r\nCVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\r\nCVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\r\n\r\nCVSolidElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.fillStyle = this.data.sc;\r\n ctx.fillRect(0, 0, this.data.sw, this.data.sh);\r\n //\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement,\r\nRenderableElement, ITextElement, createTag, createSizedArray */\r\n\r\nfunction CVTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.yOffset = 0;\r\n this.fillColorAnim = false;\r\n this.strokeColorAnim = false;\r\n this.strokeWidthAnim = false;\r\n this.stroke = false;\r\n this.fill = false;\r\n this.justifyOffset = 0;\r\n this.currentRender = null;\r\n this.renderType = 'canvas';\r\n this.values = {\r\n fill: 'rgba(0,0,0,0)',\r\n stroke: 'rgba(0,0,0,0)',\r\n sWidth: 0,\r\n fValue: '',\r\n };\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\r\n\r\nCVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\r\n\r\nCVTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n\r\n var hasFill = false;\r\n if (documentData.fc) {\r\n hasFill = true;\r\n this.values.fill = this.buildColor(documentData.fc);\r\n } else {\r\n this.values.fill = 'rgba(0,0,0,0)';\r\n }\r\n this.fill = hasFill;\r\n var hasStroke = false;\r\n if (documentData.sc) {\r\n hasStroke = true;\r\n this.values.stroke = this.buildColor(documentData.sc);\r\n this.values.sWidth = documentData.sw;\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n var i;\r\n var len;\r\n var letters = documentData.l;\r\n var matrixHelper = this.mHelper;\r\n this.stroke = hasStroke;\r\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\r\n len = documentData.finalText.length;\r\n // this.tHelper.font = this.values.fValue;\r\n var charData;\r\n var shapeData;\r\n var k;\r\n var kLen;\r\n var shapes;\r\n var j;\r\n var jLen;\r\n var pathNodes;\r\n var commands;\r\n var pathArr;\r\n var singleShape = this.data.singleShape;\r\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\r\n var xPos = 0;\r\n var yPos = 0;\r\n var firstLine = true;\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n shapeData = (charData && charData.data) || {};\r\n matrixHelper.reset();\r\n if (singleShape && letters[i].n) {\r\n xPos = -trackingOffset;\r\n yPos += documentData.yOffset;\r\n yPos += firstLine ? 1 : 0;\r\n firstLine = false;\r\n }\r\n\r\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\r\n jLen = shapes.length;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n if (singleShape) {\r\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\r\n }\r\n commands = createSizedArray(jLen);\r\n for (j = 0; j < jLen; j += 1) {\r\n kLen = shapes[j].ks.k.i.length;\r\n pathNodes = shapes[j].ks.k;\r\n pathArr = [];\r\n for (k = 1; k < kLen; k += 1) {\r\n if (k === 1) {\r\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\r\n }\r\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\r\n commands[j] = pathArr;\r\n }\r\n if (singleShape) {\r\n xPos += letters[i].l;\r\n xPos += trackingOffset;\r\n }\r\n if (this.textSpans[cnt]) {\r\n this.textSpans[cnt].elem = commands;\r\n } else {\r\n this.textSpans[cnt] = { elem: commands };\r\n }\r\n cnt += 1;\r\n }\r\n};\r\n\r\nCVTextElement.prototype.renderInnerContent = function () {\r\n var ctx = this.canvasContext;\r\n ctx.font = this.values.fValue;\r\n ctx.lineCap = 'butt';\r\n ctx.lineJoin = 'miter';\r\n ctx.miterLimit = 4;\r\n\r\n if (!this.data.singleShape) {\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n }\r\n\r\n var i;\r\n var len;\r\n var j;\r\n var jLen;\r\n var k;\r\n var kLen;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var lastFill = null;\r\n var lastStroke = null;\r\n var lastStrokeW = null;\r\n var commands;\r\n var pathArr;\r\n for (i = 0; i < len; i += 1) {\r\n if (!letters[i].n) {\r\n renderedLetter = renderedLetters[i];\r\n if (renderedLetter) {\r\n this.globalData.renderer.save();\r\n this.globalData.renderer.ctxTransform(renderedLetter.p);\r\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\r\n }\r\n if (this.fill) {\r\n if (renderedLetter && renderedLetter.fc) {\r\n if (lastFill !== renderedLetter.fc) {\r\n lastFill = renderedLetter.fc;\r\n ctx.fillStyle = renderedLetter.fc;\r\n }\r\n } else if (lastFill !== this.values.fill) {\r\n lastFill = this.values.fill;\r\n ctx.fillStyle = this.values.fill;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.fill();\r\n /// ctx.fillText(this.textSpans[i].val,0,0);\r\n }\r\n if (this.stroke) {\r\n if (renderedLetter && renderedLetter.sw) {\r\n if (lastStrokeW !== renderedLetter.sw) {\r\n lastStrokeW = renderedLetter.sw;\r\n ctx.lineWidth = renderedLetter.sw;\r\n }\r\n } else if (lastStrokeW !== this.values.sWidth) {\r\n lastStrokeW = this.values.sWidth;\r\n ctx.lineWidth = this.values.sWidth;\r\n }\r\n if (renderedLetter && renderedLetter.sc) {\r\n if (lastStroke !== renderedLetter.sc) {\r\n lastStroke = renderedLetter.sc;\r\n ctx.strokeStyle = renderedLetter.sc;\r\n }\r\n } else if (lastStroke !== this.values.stroke) {\r\n lastStroke = this.values.stroke;\r\n ctx.strokeStyle = this.values.stroke;\r\n }\r\n commands = this.textSpans[i].elem;\r\n jLen = commands.length;\r\n this.globalData.canvasContext.beginPath();\r\n for (j = 0; j < jLen; j += 1) {\r\n pathArr = commands[j];\r\n kLen = pathArr.length;\r\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\r\n for (k = 2; k < kLen; k += 6) {\r\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\r\n }\r\n }\r\n this.globalData.canvasContext.closePath();\r\n this.globalData.canvasContext.stroke();\r\n /// ctx.strokeText(letters[i].val,0,0);\r\n }\r\n if (renderedLetter) {\r\n this.globalData.renderer.restore();\r\n }\r\n }\r\n }\r\n};\r\n\r\nfunction CVEffects() {\r\n\r\n}\r\nCVEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, createNS, styleDiv, CVEffects, MaskElement, SVGBaseElement, HybridRenderer */\r\n\r\nfunction HBaseElement() {}\r\nHBaseElement.prototype = {\r\n checkBlendMode: function () {},\r\n initRendererElement: function () {\r\n this.baseElement = createTag(this.data.tg || 'div');\r\n if (this.data.hasMask) {\r\n this.svgElement = createNS('svg');\r\n this.layerElement = createNS('g');\r\n this.maskedElement = this.layerElement;\r\n this.svgElement.appendChild(this.layerElement);\r\n this.baseElement.appendChild(this.svgElement);\r\n } else {\r\n this.layerElement = this.baseElement;\r\n }\r\n styleDiv(this.baseElement);\r\n },\r\n createContainerElements: function () {\r\n this.renderableEffectsManager = new CVEffects(this);\r\n this.transformedElement = this.baseElement;\r\n this.maskedElement = this.layerElement;\r\n if (this.data.ln) {\r\n this.layerElement.setAttribute('id', this.data.ln);\r\n }\r\n if (this.data.cl) {\r\n this.layerElement.setAttribute('class', this.data.cl);\r\n }\r\n if (this.data.bm !== 0) {\r\n this.setBlendMode();\r\n }\r\n },\r\n renderElement: function () {\r\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\r\n if (this.finalTransform._matMdf) {\r\n var matrixValue = this.finalTransform.mat.toCSS();\r\n transformedElementStyle.transform = matrixValue;\r\n transformedElementStyle.webkitTransform = matrixValue;\r\n }\r\n if (this.finalTransform._opMdf) {\r\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\r\n }\r\n },\r\n renderFrame: function () {\r\n // If it is exported as hidden (data.hd === true) no need to render\r\n // If it is not visible no need to render\r\n if (this.data.hd || this.hidden) {\r\n return;\r\n }\r\n this.renderTransform();\r\n this.renderRenderable();\r\n this.renderElement();\r\n this.renderInnerContent();\r\n if (this._isFirstFrame) {\r\n this._isFirstFrame = false;\r\n }\r\n },\r\n destroy: function () {\r\n this.layerElement = null;\r\n this.transformedElement = null;\r\n if (this.matteElement) {\r\n this.matteElement = null;\r\n }\r\n if (this.maskManager) {\r\n this.maskManager.destroy();\r\n this.maskManager = null;\r\n }\r\n },\r\n createRenderableComponents: function () {\r\n this.maskManager = new MaskElement(this.data, this, this.globalData);\r\n },\r\n addEffects: function () {\r\n },\r\n setMatte: function () {},\r\n};\r\nHBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\r\nHBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\r\nHBaseElement.prototype.buildElementParenting = HybridRenderer.prototype.buildElementParenting;\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, createNS, createTag */\r\n\r\nfunction HSolidElement(data, globalData, comp) {\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\r\n\r\nHSolidElement.prototype.createContent = function () {\r\n var rect;\r\n if (this.data.hasMask) {\r\n rect = createNS('rect');\r\n rect.setAttribute('width', this.data.sw);\r\n rect.setAttribute('height', this.data.sh);\r\n rect.setAttribute('fill', this.data.sc);\r\n this.svgElement.setAttribute('width', this.data.sw);\r\n this.svgElement.setAttribute('height', this.data.sh);\r\n } else {\r\n rect = createTag('div');\r\n rect.style.width = this.data.sw + 'px';\r\n rect.style.height = this.data.sh + 'px';\r\n rect.style.backgroundColor = this.data.sc;\r\n }\r\n this.layerElement.appendChild(rect);\r\n};\r\n\r\n/* global createSizedArray, PropertyFactory, extendPrototype, HybridRenderer, ICompElement, HBaseElement */\r\n\r\nfunction HCompElement(data, globalData, comp) {\r\n this.layers = data.layers;\r\n this.supports3d = !data.hasMask;\r\n this.completeLayers = false;\r\n this.pendingElements = [];\r\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\r\n this.initElement(data, globalData, comp);\r\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : { _placeholder: true };\r\n}\r\n\r\nextendPrototype([HybridRenderer, ICompElement, HBaseElement], HCompElement);\r\nHCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\r\n\r\nHCompElement.prototype.createContainerElements = function () {\r\n this._createBaseContainerElements();\r\n // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\r\n if (this.data.hasMask) {\r\n this.svgElement.setAttribute('width', this.data.w);\r\n this.svgElement.setAttribute('height', this.data.h);\r\n this.transformedElement = this.baseElement;\r\n } else {\r\n this.transformedElement = this.layerElement;\r\n }\r\n};\r\n\r\nHCompElement.prototype.addTo3dContainer = function (elem, pos) {\r\n var j = 0;\r\n var nextElement;\r\n while (j < pos) {\r\n if (this.elements[j] && this.elements[j].getBaseElement) {\r\n nextElement = this.elements[j].getBaseElement();\r\n }\r\n j += 1;\r\n }\r\n if (nextElement) {\r\n this.layerElement.insertBefore(elem, nextElement);\r\n } else {\r\n this.layerElement.appendChild(elem);\r\n }\r\n};\r\n\r\n/* global createNS, extendPrototype, BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement,\r\nHierarchyElement, FrameElement, RenderableElement, createNS, bmMin, bmSqrt, bmMin, bmMax, bmPow */\r\n\r\nfunction HShapeElement(data, globalData, comp) {\r\n // List of drawable elements\r\n this.shapes = [];\r\n // Full shape data\r\n this.shapesData = data.shapes;\r\n // List of styles that will be applied to shapes\r\n this.stylesList = [];\r\n // List of modifiers that will be applied to shapes\r\n this.shapeModifiers = [];\r\n // List of items in shape tree\r\n this.itemsData = [];\r\n // List of items in previous shape tree\r\n this.processedElements = [];\r\n // List of animated components\r\n this.animatedContents = [];\r\n this.shapesContainer = createNS('g');\r\n this.initElement(data, globalData, comp);\r\n // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\r\n // List of elements that have been created\r\n this.prevViewData = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n}\r\nextendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\r\nHShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\r\n\r\nHShapeElement.prototype.createContent = function () {\r\n var cont;\r\n this.baseElement.style.fontSize = 0;\r\n if (this.data.hasMask) {\r\n this.layerElement.appendChild(this.shapesContainer);\r\n cont = this.svgElement;\r\n } else {\r\n cont = createNS('svg');\r\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\r\n cont.setAttribute('width', size.w);\r\n cont.setAttribute('height', size.h);\r\n cont.appendChild(this.shapesContainer);\r\n this.layerElement.appendChild(cont);\r\n }\r\n\r\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\r\n this.filterUniqueShapes();\r\n this.shapeCont = cont;\r\n};\r\n\r\nHShapeElement.prototype.getTransformedPoint = function (transformers, point) {\r\n var i;\r\n var len = transformers.length;\r\n for (i = 0; i < len; i += 1) {\r\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\r\n }\r\n return point;\r\n};\r\n\r\nHShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\r\n var shape = item.sh.v;\r\n var transformers = item.transformers;\r\n var i;\r\n var len = shape._length;\r\n var vPoint;\r\n var oPoint;\r\n var nextIPoint;\r\n var nextVPoint;\r\n if (len <= 1) {\r\n return;\r\n }\r\n for (i = 0; i < len - 1; i += 1) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n if (shape.c) {\r\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\r\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\r\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\r\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\r\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\r\n }\r\n};\r\n\r\nHShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\r\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\r\n var bounds = this.shapeBoundingBox;\r\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\r\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\r\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\r\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\r\n};\r\n\r\nHShapeElement.prototype.shapeBoundingBox = {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 0,\r\n};\r\n\r\nHShapeElement.prototype.tempBoundingBox = {\r\n x: 0,\r\n xMax: 0,\r\n y: 0,\r\n yMax: 0,\r\n width: 0,\r\n height: 0,\r\n};\r\n\r\nHShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\r\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\r\n\r\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) { // eslint-disable-line no-plusplus\r\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\r\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\r\n c = 3 * p1[i] - 3 * p0[i];\r\n\r\n b |= 0; // eslint-disable-line no-bitwise\r\n a |= 0; // eslint-disable-line no-bitwise\r\n c |= 0; // eslint-disable-line no-bitwise\r\n\r\n if (a === 0 && b === 0) {\r\n //\r\n } else if (a === 0) {\r\n t = -c / b;\r\n\r\n if (t > 0 && t < 1) {\r\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\r\n }\r\n } else {\r\n b2ac = b * b - 4 * c * a;\r\n\r\n if (b2ac >= 0) {\r\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\r\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\r\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\r\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\r\n }\r\n }\r\n }\r\n\r\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\r\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\r\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\r\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\r\n};\r\n\r\nHShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\r\n return bmPow(1 - t, 3) * p0[i]\r\n + 3 * bmPow(1 - t, 2) * t * p1[i]\r\n + 3 * (1 - t) * bmPow(t, 2) * p2[i]\r\n + bmPow(t, 3) * p3[i];\r\n};\r\n\r\nHShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\r\n var i;\r\n var len = itemsData.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (itemsData[i] && itemsData[i].sh) {\r\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\r\n } else if (itemsData[i] && itemsData[i].it) {\r\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\r\n }\r\n }\r\n};\r\n\r\nHShapeElement.prototype.currentBoxContains = function (box) {\r\n return this.currentBBox.x <= box.x\r\n && this.currentBBox.y <= box.y\r\n && this.currentBBox.width + this.currentBBox.x >= box.x + box.width\r\n && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\r\n};\r\n\r\nHShapeElement.prototype.renderInnerContent = function () {\r\n this._renderShapeFrame();\r\n\r\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var tempBoundingBox = this.tempBoundingBox;\r\n var max = 999999;\r\n tempBoundingBox.x = max;\r\n tempBoundingBox.xMax = -max;\r\n tempBoundingBox.y = max;\r\n tempBoundingBox.yMax = -max;\r\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\r\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\r\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\r\n // var tempBoundingBox = this.shapeCont.getBBox();\r\n if (this.currentBoxContains(tempBoundingBox)) {\r\n return;\r\n }\r\n var changed = false;\r\n if (this.currentBBox.w !== tempBoundingBox.width) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\r\n changed = true;\r\n }\r\n if (this.currentBBox.h !== tempBoundingBox.height) {\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\r\n changed = true;\r\n }\r\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\r\n this.currentBBox.w = tempBoundingBox.width;\r\n this.currentBBox.h = tempBoundingBox.height;\r\n this.currentBBox.x = tempBoundingBox.x;\r\n this.currentBBox.y = tempBoundingBox.y;\r\n\r\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n var shapeStyle = this.shapeCont.style;\r\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n shapeStyle.transform = shapeTransform;\r\n shapeStyle.webkitTransform = shapeTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement,\r\nRenderableDOMElement, ITextElement, createSizedArray, createTag, styleDiv, createNS */\r\n\r\nfunction HTextElement(data, globalData, comp) {\r\n this.textSpans = [];\r\n this.textPaths = [];\r\n this.currentBBox = {\r\n x: 999999,\r\n y: -999999,\r\n h: 0,\r\n w: 0,\r\n };\r\n this.renderType = 'svg';\r\n this.isMasked = false;\r\n this.initElement(data, globalData, comp);\r\n}\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\r\n\r\nHTextElement.prototype.createContent = function () {\r\n this.isMasked = this.checkMasks();\r\n if (this.isMasked) {\r\n this.renderType = 'svg';\r\n this.compW = this.comp.data.w;\r\n this.compH = this.comp.data.h;\r\n this.svgElement.setAttribute('width', this.compW);\r\n this.svgElement.setAttribute('height', this.compH);\r\n var g = createNS('g');\r\n this.maskedElement.appendChild(g);\r\n this.innerElem = g;\r\n } else {\r\n this.renderType = 'html';\r\n this.innerElem = this.layerElement;\r\n }\r\n\r\n this.checkParenting();\r\n};\r\n\r\nHTextElement.prototype.buildNewText = function () {\r\n var documentData = this.textProperty.currentData;\r\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\r\n var innerElemStyle = this.innerElem.style;\r\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\r\n innerElemStyle.fill = textColor;\r\n innerElemStyle.color = textColor;\r\n if (documentData.sc) {\r\n innerElemStyle.stroke = this.buildColor(documentData.sc);\r\n innerElemStyle.strokeWidth = documentData.sw + 'px';\r\n }\r\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\r\n if (!this.globalData.fontManager.chars) {\r\n innerElemStyle.fontSize = documentData.finalSize + 'px';\r\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\r\n if (fontData.fClass) {\r\n this.innerElem.className = fontData.fClass;\r\n } else {\r\n innerElemStyle.fontFamily = fontData.fFamily;\r\n var fWeight = documentData.fWeight;\r\n var fStyle = documentData.fStyle;\r\n innerElemStyle.fontStyle = fStyle;\r\n innerElemStyle.fontWeight = fWeight;\r\n }\r\n }\r\n var i;\r\n var len;\r\n\r\n var letters = documentData.l;\r\n len = letters.length;\r\n var tSpan;\r\n var tParent;\r\n var tCont;\r\n var matrixHelper = this.mHelper;\r\n var shapes;\r\n var shapeStr = '';\r\n var cnt = 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (this.globalData.fontManager.chars) {\r\n if (!this.textPaths[cnt]) {\r\n tSpan = createNS('path');\r\n tSpan.setAttribute('stroke-linecap', 'butt');\r\n tSpan.setAttribute('stroke-linejoin', 'round');\r\n tSpan.setAttribute('stroke-miterlimit', '4');\r\n } else {\r\n tSpan = this.textPaths[cnt];\r\n }\r\n if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tCont = tParent.children[0];\r\n } else {\r\n tParent = createTag('div');\r\n tParent.style.lineHeight = 0;\r\n tCont = createNS('svg');\r\n tCont.appendChild(tSpan);\r\n styleDiv(tParent);\r\n }\r\n }\r\n } else if (!this.isMasked) {\r\n if (this.textSpans[cnt]) {\r\n tParent = this.textSpans[cnt];\r\n tSpan = this.textPaths[cnt];\r\n } else {\r\n tParent = createTag('span');\r\n styleDiv(tParent);\r\n tSpan = createTag('span');\r\n styleDiv(tSpan);\r\n tParent.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\r\n }\r\n // tSpan.setAttribute('visibility', 'hidden');\r\n if (this.globalData.fontManager.chars) {\r\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\r\n var shapeData;\r\n if (charData) {\r\n shapeData = charData.data;\r\n } else {\r\n shapeData = null;\r\n }\r\n matrixHelper.reset();\r\n if (shapeData && shapeData.shapes) {\r\n shapes = shapeData.shapes[0].it;\r\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\r\n shapeStr = this.createPathShape(matrixHelper, shapes);\r\n tSpan.setAttribute('d', shapeStr);\r\n }\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n if (shapeData && shapeData.shapes) {\r\n // document.body.appendChild is needed to get exact measure of shape\r\n document.body.appendChild(tCont);\r\n var boundingBox = tCont.getBBox();\r\n tCont.setAttribute('width', boundingBox.width + 2);\r\n tCont.setAttribute('height', boundingBox.height + 2);\r\n tCont.setAttribute('viewBox', (boundingBox.x - 1) + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\r\n var tContStyle = tCont.style;\r\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\r\n tContStyle.transform = tContTranslation;\r\n tContStyle.webkitTransform = tContTranslation;\r\n\r\n letters[i].yOffset = boundingBox.y - 1;\r\n } else {\r\n tCont.setAttribute('width', 1);\r\n tCont.setAttribute('height', 1);\r\n }\r\n tParent.appendChild(tCont);\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n } else {\r\n tSpan.textContent = letters[i].val;\r\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\r\n if (!this.isMasked) {\r\n this.innerElem.appendChild(tParent);\r\n //\r\n var tStyle = tSpan.style;\r\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\r\n tStyle.transform = tSpanTranslation;\r\n tStyle.webkitTransform = tSpanTranslation;\r\n } else {\r\n this.innerElem.appendChild(tSpan);\r\n }\r\n }\r\n //\r\n if (!this.isMasked) {\r\n this.textSpans[cnt] = tParent;\r\n } else {\r\n this.textSpans[cnt] = tSpan;\r\n }\r\n this.textSpans[cnt].style.display = 'block';\r\n this.textPaths[cnt] = tSpan;\r\n cnt += 1;\r\n }\r\n while (cnt < this.textSpans.length) {\r\n this.textSpans[cnt].style.display = 'none';\r\n cnt += 1;\r\n }\r\n};\r\n\r\nHTextElement.prototype.renderInnerContent = function () {\r\n var svgStyle;\r\n if (this.data.singleShape) {\r\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\r\n return;\r\n } if (this.isMasked && this.finalTransform._matMdf) {\r\n // Todo Benchmark if using this is better than getBBox\r\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\r\n svgStyle = this.svgElement.style;\r\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\r\n svgStyle.transform = translation;\r\n svgStyle.webkitTransform = translation;\r\n }\r\n }\r\n\r\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\r\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\r\n return;\r\n }\r\n var i;\r\n var len;\r\n var count = 0;\r\n var renderedLetters = this.textAnimator.renderedLetters;\r\n\r\n var letters = this.textProperty.currentData.l;\r\n\r\n len = letters.length;\r\n var renderedLetter;\r\n var textSpan;\r\n var textPath;\r\n for (i = 0; i < len; i += 1) {\r\n if (letters[i].n) {\r\n count += 1;\r\n } else {\r\n textSpan = this.textSpans[i];\r\n textPath = this.textPaths[i];\r\n renderedLetter = renderedLetters[count];\r\n count += 1;\r\n if (renderedLetter._mdf.m) {\r\n if (!this.isMasked) {\r\n textSpan.style.webkitTransform = renderedLetter.m;\r\n textSpan.style.transform = renderedLetter.m;\r\n } else {\r\n textSpan.setAttribute('transform', renderedLetter.m);\r\n }\r\n }\r\n /// /textSpan.setAttribute('opacity',renderedLetter.o);\r\n textSpan.style.opacity = renderedLetter.o;\r\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\r\n textPath.setAttribute('stroke-width', renderedLetter.sw);\r\n }\r\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\r\n textPath.setAttribute('stroke', renderedLetter.sc);\r\n }\r\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\r\n textPath.setAttribute('fill', renderedLetter.fc);\r\n textPath.style.color = renderedLetter.fc;\r\n }\r\n }\r\n }\r\n\r\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\r\n var boundingBox = this.innerElem.getBBox();\r\n\r\n if (this.currentBBox.w !== boundingBox.width) {\r\n this.currentBBox.w = boundingBox.width;\r\n this.svgElement.setAttribute('width', boundingBox.width);\r\n }\r\n if (this.currentBBox.h !== boundingBox.height) {\r\n this.currentBBox.h = boundingBox.height;\r\n this.svgElement.setAttribute('height', boundingBox.height);\r\n }\r\n\r\n var margin = 1;\r\n if (this.currentBBox.w !== (boundingBox.width + margin * 2) || this.currentBBox.h !== (boundingBox.height + margin * 2) || this.currentBBox.x !== (boundingBox.x - margin) || this.currentBBox.y !== (boundingBox.y - margin)) {\r\n this.currentBBox.w = boundingBox.width + margin * 2;\r\n this.currentBBox.h = boundingBox.height + margin * 2;\r\n this.currentBBox.x = boundingBox.x - margin;\r\n this.currentBBox.y = boundingBox.y - margin;\r\n\r\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\r\n svgStyle = this.svgElement.style;\r\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\r\n svgStyle.transform = svgTransform;\r\n svgStyle.webkitTransform = svgTransform;\r\n }\r\n }\r\n};\r\n\r\n/* global extendPrototype, BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement,\r\nFrameElement, RenderableElement, createNS */\r\n\r\nfunction HImageElement(data, globalData, comp) {\r\n this.assetData = globalData.getAssetData(data.refId);\r\n this.initElement(data, globalData, comp);\r\n}\r\n\r\nextendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\r\n\r\nHImageElement.prototype.createContent = function () {\r\n var assetPath = this.globalData.getAssetsPath(this.assetData);\r\n var img = new Image();\r\n\r\n if (this.data.hasMask) {\r\n this.imageElem = createNS('image');\r\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\r\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\r\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\r\n this.layerElement.appendChild(this.imageElem);\r\n this.baseElement.setAttribute('width', this.assetData.w);\r\n this.baseElement.setAttribute('height', this.assetData.h);\r\n } else {\r\n this.layerElement.appendChild(img);\r\n }\r\n img.crossOrigin = 'anonymous';\r\n img.src = assetPath;\r\n if (this.data.ln) {\r\n this.baseElement.setAttribute('id', this.data.ln);\r\n }\r\n};\r\n\r\n/* global PropertyFactory, degToRads, Matrix, extendPrototype, BaseElement, FrameElement, HierarchyElement */\r\n\r\nfunction HCameraElement(data, globalData, comp) {\r\n this.initFrame();\r\n this.initBaseData(data, globalData, comp);\r\n this.initHierarchy();\r\n var getProp = PropertyFactory.getProp;\r\n this.pe = getProp(this, data.pe, 0, 0, this);\r\n if (data.ks.p.s) {\r\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\r\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\r\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\r\n } else {\r\n this.p = getProp(this, data.ks.p, 1, 0, this);\r\n }\r\n if (data.ks.a) {\r\n this.a = getProp(this, data.ks.a, 1, 0, this);\r\n }\r\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\r\n var i;\r\n var len = data.ks.or.k.length;\r\n for (i = 0; i < len; i += 1) {\r\n data.ks.or.k[i].to = null;\r\n data.ks.or.k[i].ti = null;\r\n }\r\n }\r\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\r\n this.or.sh = true;\r\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\r\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\r\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\r\n this.mat = new Matrix();\r\n this._prevMat = new Matrix();\r\n this._isFirstFrame = true;\r\n\r\n // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\r\n this.finalTransform = {\r\n mProp: this,\r\n };\r\n}\r\nextendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\r\n\r\nHCameraElement.prototype.setup = function () {\r\n var i;\r\n var len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n // [perspectiveElem,container]\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n containerStyle = comp.container.style;\r\n var perspective = this.pe.v + 'px';\r\n var origin = '0px 0px 0px';\r\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\r\n perspectiveStyle.perspective = perspective;\r\n perspectiveStyle.webkitPerspective = perspective;\r\n containerStyle.transformOrigin = origin;\r\n containerStyle.mozTransformOrigin = origin;\r\n containerStyle.webkitTransformOrigin = origin;\r\n perspectiveStyle.transform = matrix;\r\n perspectiveStyle.webkitTransform = matrix;\r\n }\r\n }\r\n};\r\n\r\nHCameraElement.prototype.createElements = function () {\r\n};\r\n\r\nHCameraElement.prototype.hide = function () {\r\n};\r\n\r\nHCameraElement.prototype.renderFrame = function () {\r\n var _mdf = this._isFirstFrame;\r\n var i;\r\n var len;\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\r\n }\r\n }\r\n if (_mdf || this.pe._mdf || (this.p && this.p._mdf) || (this.px && (this.px._mdf || this.py._mdf || this.pz._mdf)) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || (this.a && this.a._mdf)) {\r\n this.mat.reset();\r\n\r\n if (this.hierarchy) {\r\n len = this.hierarchy.length - 1;\r\n for (i = len; i >= 0; i -= 1) {\r\n var mTransf = this.hierarchy[i].finalTransform.mProp;\r\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\r\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\r\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\r\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\r\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\r\n }\r\n }\r\n if (this.p) {\r\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\r\n } else {\r\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\r\n }\r\n if (this.a) {\r\n var diffVector;\r\n if (this.p) {\r\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\r\n } else {\r\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\r\n }\r\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\r\n // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\r\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\r\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\r\n var mRotationX = (Math.atan2(lookDir[1], lookLengthOnXZ));\r\n var mRotationY = (Math.atan2(lookDir[0], -lookDir[2]));\r\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\r\n }\r\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\r\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\r\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\r\n this.mat.translate(0, 0, this.pe.v);\r\n\r\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\r\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\r\n len = this.comp.threeDElements.length;\r\n var comp;\r\n var perspectiveStyle;\r\n var containerStyle;\r\n for (i = 0; i < len; i += 1) {\r\n comp = this.comp.threeDElements[i];\r\n if (comp.type === '3d') {\r\n if (hasMatrixChanged) {\r\n var matValue = this.mat.toCSS();\r\n containerStyle = comp.container.style;\r\n containerStyle.transform = matValue;\r\n containerStyle.webkitTransform = matValue;\r\n }\r\n if (this.pe._mdf) {\r\n perspectiveStyle = comp.perspectiveElem.style;\r\n perspectiveStyle.perspective = this.pe.v + 'px';\r\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\r\n }\r\n }\r\n }\r\n this.mat.clone(this._prevMat);\r\n }\r\n }\r\n this._isFirstFrame = false;\r\n};\r\n\r\nHCameraElement.prototype.prepareFrame = function (num) {\r\n this.prepareProperties(num, true);\r\n};\r\n\r\nHCameraElement.prototype.destroy = function () {\r\n};\r\nHCameraElement.prototype.getBaseElement = function () { return null; };\r\n\r\nfunction HEffects() {\r\n}\r\nHEffects.prototype.renderFrame = function () {};\r\n\r\n/* global createTag, AnimationItem */\r\n/* exported animationManager */\r\n\r\nvar animationManager = (function () {\r\n var moduleOb = {};\r\n var registeredAnimations = [];\r\n var initTime = 0;\r\n var len = 0;\r\n var playingAnimationsNum = 0;\r\n var _stopped = true;\r\n var _isFrozen = false;\r\n\r\n function removeElement(ev) {\r\n var i = 0;\r\n var animItem = ev.target;\r\n while (i < len) {\r\n if (registeredAnimations[i].animation === animItem) {\r\n registeredAnimations.splice(i, 1);\r\n i -= 1;\r\n len -= 1;\r\n if (!animItem.isPaused) {\r\n subtractPlayingCount();\r\n }\r\n }\r\n i += 1;\r\n }\r\n }\r\n\r\n function registerAnimation(element, animationData) {\r\n if (!element) {\r\n return null;\r\n }\r\n var i = 0;\r\n while (i < len) {\r\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\r\n return registeredAnimations[i].animation;\r\n }\r\n i += 1;\r\n }\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, element);\r\n animItem.setData(element, animationData);\r\n return animItem;\r\n }\r\n\r\n function getRegisteredAnimations() {\r\n var i;\r\n var lenAnims = registeredAnimations.length;\r\n var animations = [];\r\n for (i = 0; i < lenAnims; i += 1) {\r\n animations.push(registeredAnimations[i].animation);\r\n }\r\n return animations;\r\n }\r\n\r\n function addPlayingCount() {\r\n playingAnimationsNum += 1;\r\n activate();\r\n }\r\n\r\n function subtractPlayingCount() {\r\n playingAnimationsNum -= 1;\r\n }\r\n\r\n function setupAnimation(animItem, element) {\r\n animItem.addEventListener('destroy', removeElement);\r\n animItem.addEventListener('_active', addPlayingCount);\r\n animItem.addEventListener('_idle', subtractPlayingCount);\r\n registeredAnimations.push({ elem: element, animation: animItem });\r\n len += 1;\r\n }\r\n\r\n function loadAnimation(params) {\r\n var animItem = new AnimationItem();\r\n setupAnimation(animItem, null);\r\n animItem.setParams(params);\r\n return animItem;\r\n }\r\n\r\n function setSpeed(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setSpeed(val, animation);\r\n }\r\n }\r\n\r\n function setDirection(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setDirection(val, animation);\r\n }\r\n }\r\n\r\n function play(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.play(animation);\r\n }\r\n }\r\n function resume(nowTime) {\r\n var elapsedTime = nowTime - initTime;\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.advanceTime(elapsedTime);\r\n }\r\n initTime = nowTime;\r\n if (playingAnimationsNum && !_isFrozen) {\r\n window.requestAnimationFrame(resume);\r\n } else {\r\n _stopped = true;\r\n }\r\n }\r\n\r\n function first(nowTime) {\r\n initTime = nowTime;\r\n window.requestAnimationFrame(resume);\r\n }\r\n\r\n function pause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.pause(animation);\r\n }\r\n }\r\n\r\n function goToAndStop(value, isFrame, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\r\n }\r\n }\r\n\r\n function stop(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.stop(animation);\r\n }\r\n }\r\n\r\n function togglePause(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.togglePause(animation);\r\n }\r\n }\r\n\r\n function destroy(animation) {\r\n var i;\r\n for (i = (len - 1); i >= 0; i -= 1) {\r\n registeredAnimations[i].animation.destroy(animation);\r\n }\r\n }\r\n\r\n function searchAnimations(animationData, standalone, renderer) {\r\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')),\r\n [].slice.call(document.getElementsByClassName('bodymovin')));\r\n var i;\r\n var lenAnims = animElements.length;\r\n for (i = 0; i < lenAnims; i += 1) {\r\n if (renderer) {\r\n animElements[i].setAttribute('data-bm-type', renderer);\r\n }\r\n registerAnimation(animElements[i], animationData);\r\n }\r\n if (standalone && lenAnims === 0) {\r\n if (!renderer) {\r\n renderer = 'svg';\r\n }\r\n var body = document.getElementsByTagName('body')[0];\r\n body.innerText = '';\r\n var div = createTag('div');\r\n div.style.width = '100%';\r\n div.style.height = '100%';\r\n div.setAttribute('data-bm-type', renderer);\r\n body.appendChild(div);\r\n registerAnimation(div, animationData);\r\n }\r\n }\r\n\r\n function resize() {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.resize();\r\n }\r\n }\r\n\r\n function activate() {\r\n if (!_isFrozen && playingAnimationsNum) {\r\n if (_stopped) {\r\n window.requestAnimationFrame(first);\r\n _stopped = false;\r\n }\r\n }\r\n }\r\n\r\n function freeze() {\r\n _isFrozen = true;\r\n }\r\n\r\n function unfreeze() {\r\n _isFrozen = false;\r\n activate();\r\n }\r\n\r\n function setVolume(val, animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.setVolume(val, animation);\r\n }\r\n }\r\n\r\n function mute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.mute(animation);\r\n }\r\n }\r\n\r\n function unmute(animation) {\r\n var i;\r\n for (i = 0; i < len; i += 1) {\r\n registeredAnimations[i].animation.unmute(animation);\r\n }\r\n }\r\n\r\n moduleOb.registerAnimation = registerAnimation;\r\n moduleOb.loadAnimation = loadAnimation;\r\n moduleOb.setSpeed = setSpeed;\r\n moduleOb.setDirection = setDirection;\r\n moduleOb.play = play;\r\n moduleOb.pause = pause;\r\n moduleOb.stop = stop;\r\n moduleOb.togglePause = togglePause;\r\n moduleOb.searchAnimations = searchAnimations;\r\n moduleOb.resize = resize;\r\n // moduleOb.start = start;\r\n moduleOb.goToAndStop = goToAndStop;\r\n moduleOb.destroy = destroy;\r\n moduleOb.freeze = freeze;\r\n moduleOb.unfreeze = unfreeze;\r\n moduleOb.setVolume = setVolume;\r\n moduleOb.mute = mute;\r\n moduleOb.unmute = unmute;\r\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\r\n return moduleOb;\r\n}());\r\n\r\n/* global createElementID, subframeEnabled, ProjectInterface, ImagePreloader, audioControllerFactory, extendPrototype, BaseEvent,\r\nCanvasRenderer, SVGRenderer, HybridRenderer, assetLoader, dataManager, expressionsPlugin, BMEnterFrameEvent, BMCompleteLoopEvent,\r\nBMCompleteEvent, BMSegmentStartEvent, BMDestroyEvent, BMEnterFrameEvent, BMCompleteLoopEvent, BMCompleteEvent, BMSegmentStartEvent,\r\nBMDestroyEvent, BMRenderFrameErrorEvent, BMConfigErrorEvent, markerParser */\r\n\r\nvar AnimationItem = function () {\r\n this._cbs = [];\r\n this.name = '';\r\n this.path = '';\r\n this.isLoaded = false;\r\n this.currentFrame = 0;\r\n this.currentRawFrame = 0;\r\n this.firstFrame = 0;\r\n this.totalFrames = 0;\r\n this.frameRate = 0;\r\n this.frameMult = 0;\r\n this.playSpeed = 1;\r\n this.playDirection = 1;\r\n this.playCount = 0;\r\n this.animationData = {};\r\n this.assets = [];\r\n this.isPaused = true;\r\n this.autoplay = false;\r\n this.loop = true;\r\n this.renderer = null;\r\n this.animationID = createElementID();\r\n this.assetsPath = '';\r\n this.timeCompleted = 0;\r\n this.segmentPos = 0;\r\n this.isSubframeEnabled = subframeEnabled;\r\n this.segments = [];\r\n this._idle = true;\r\n this._completedLoop = false;\r\n this.projectInterface = ProjectInterface();\r\n this.imagePreloader = new ImagePreloader();\r\n this.audioController = audioControllerFactory();\r\n this.markers = [];\r\n};\r\n\r\nextendPrototype([BaseEvent], AnimationItem);\r\n\r\nAnimationItem.prototype.setParams = function (params) {\r\n if (params.wrapper || params.container) {\r\n this.wrapper = params.wrapper || params.container;\r\n }\r\n var animType = 'svg';\r\n if (params.animType) {\r\n animType = params.animType;\r\n } else if (params.renderer) {\r\n animType = params.renderer;\r\n }\r\n switch (animType) {\r\n case 'canvas':\r\n this.renderer = new CanvasRenderer(this, params.rendererSettings);\r\n break;\r\n case 'svg':\r\n this.renderer = new SVGRenderer(this, params.rendererSettings);\r\n break;\r\n default:\r\n this.renderer = new HybridRenderer(this, params.rendererSettings);\r\n break;\r\n }\r\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\r\n this.renderer.setProjectInterface(this.projectInterface);\r\n this.animType = animType;\r\n if (params.loop === ''\r\n || params.loop === null\r\n || params.loop === undefined\r\n || params.loop === true) {\r\n this.loop = true;\r\n } else if (params.loop === false) {\r\n this.loop = false;\r\n } else {\r\n this.loop = parseInt(params.loop, 10);\r\n }\r\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\r\n this.name = params.name ? params.name : '';\r\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\r\n this.assetsPath = params.assetsPath;\r\n this.initialSegment = params.initialSegment;\r\n if (params.audioFactory) {\r\n this.audioController.setAudioFactory(params.audioFactory);\r\n }\r\n if (params.animationData) {\r\n this.configAnimation(params.animationData);\r\n } else if (params.path) {\r\n if (params.path.lastIndexOf('\\\\') !== -1) {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\r\n } else {\r\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\r\n }\r\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\r\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\r\n\r\n assetLoader.load(params.path, this.configAnimation.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.setData = function (wrapper, animationData) {\r\n if (animationData) {\r\n if (typeof animationData !== 'object') {\r\n animationData = JSON.parse(animationData);\r\n }\r\n }\r\n var params = {\r\n wrapper: wrapper,\r\n animationData: animationData,\r\n };\r\n var wrapperAttributes = wrapper.attributes;\r\n\r\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-animation-path').value\r\n : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-path').value\r\n : wrapperAttributes.getNamedItem('bm-path')\r\n ? wrapperAttributes.getNamedItem('bm-path').value\r\n : '';\r\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-type').value\r\n : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('bm-type').value\r\n : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value\r\n : wrapperAttributes.getNamedItem('bm-renderer')\r\n ? wrapperAttributes.getNamedItem('bm-renderer').value\r\n : 'canvas';\r\n\r\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-loop').value\r\n : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-loop').value\r\n : wrapperAttributes.getNamedItem('bm-loop')\r\n ? wrapperAttributes.getNamedItem('bm-loop').value\r\n : '';\r\n if (loop === 'false') {\r\n params.loop = false;\r\n } else if (loop === 'true') {\r\n params.loop = true;\r\n } else if (loop !== '') {\r\n params.loop = parseInt(loop, 10);\r\n }\r\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value\r\n : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value\r\n : wrapperAttributes.getNamedItem('bm-autoplay')\r\n ? wrapperAttributes.getNamedItem('bm-autoplay').value\r\n : true;\r\n params.autoplay = autoplay !== 'false';\r\n\r\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-name').value\r\n : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-name').value\r\n : wrapperAttributes.getNamedItem('bm-name')\r\n ? wrapperAttributes.getNamedItem('bm-name').value\r\n : '';\r\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value\r\n : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\r\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value\r\n : wrapperAttributes.getNamedItem('bm-prerender')\r\n ? wrapperAttributes.getNamedItem('bm-prerender').value\r\n : '';\r\n\r\n if (prerender === 'false') {\r\n params.prerender = false;\r\n }\r\n this.setParams(params);\r\n};\r\n\r\nAnimationItem.prototype.includeLayers = function (data) {\r\n if (data.op > this.animationData.op) {\r\n this.animationData.op = data.op;\r\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\r\n }\r\n var layers = this.animationData.layers;\r\n var i;\r\n var len = layers.length;\r\n var newLayers = data.layers;\r\n var j;\r\n var jLen = newLayers.length;\r\n for (j = 0; j < jLen; j += 1) {\r\n i = 0;\r\n while (i < len) {\r\n if (layers[i].id === newLayers[j].id) {\r\n layers[i] = newLayers[j];\r\n break;\r\n }\r\n i += 1;\r\n }\r\n }\r\n if (data.chars || data.fonts) {\r\n this.renderer.globalData.fontManager.addChars(data.chars);\r\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\r\n }\r\n if (data.assets) {\r\n len = data.assets.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.animationData.assets.push(data.assets[i]);\r\n }\r\n }\r\n this.animationData.__complete = false;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n this.renderer.includeLayers(data.layers);\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.loadNextSegment = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\r\n this.trigger('data_ready');\r\n this.timeCompleted = this.totalFrames;\r\n return;\r\n }\r\n var segment = segments.shift();\r\n this.timeCompleted = segment.time * this.frameRate;\r\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\r\n this.segmentPos += 1;\r\n assetLoader.load(segmentPath, this.includeLayers.bind(this), function () {\r\n this.trigger('data_failed');\r\n }.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.loadSegments = function () {\r\n var segments = this.animationData.segments;\r\n if (!segments) {\r\n this.timeCompleted = this.totalFrames;\r\n }\r\n this.loadNextSegment();\r\n};\r\n\r\nAnimationItem.prototype.imagesLoaded = function () {\r\n this.trigger('loaded_images');\r\n this.checkLoaded();\r\n};\r\n\r\nAnimationItem.prototype.preloadImages = function () {\r\n this.imagePreloader.setAssetsPath(this.assetsPath);\r\n this.imagePreloader.setPath(this.path);\r\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\r\n};\r\n\r\nAnimationItem.prototype.configAnimation = function (animData) {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.animationData = animData;\r\n\r\n if (this.initialSegment) {\r\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\r\n this.firstFrame = Math.round(this.initialSegment[0]);\r\n } else {\r\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\r\n this.firstFrame = Math.round(this.animationData.ip);\r\n }\r\n this.renderer.configAnimation(animData);\r\n if (!animData.assets) {\r\n animData.assets = [];\r\n }\r\n\r\n this.assets = this.animationData.assets;\r\n this.frameRate = this.animationData.fr;\r\n this.frameMult = this.animationData.fr / 1000;\r\n this.renderer.searchExtraCompositions(animData.assets);\r\n this.markers = markerParser(animData.markers || []);\r\n this.trigger('config_ready');\r\n this.preloadImages();\r\n this.loadSegments();\r\n this.updaFrameModifier();\r\n this.waitForFontsLoaded();\r\n if (this.isPaused) {\r\n this.audioController.pause();\r\n }\r\n } catch (error) {\r\n this.triggerConfigError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.waitForFontsLoaded = function () {\r\n if (!this.renderer) {\r\n return;\r\n }\r\n if (this.renderer.globalData.fontManager.isLoaded) {\r\n this.checkLoaded();\r\n } else {\r\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.checkLoaded = function () {\r\n if (!this.isLoaded\r\n && this.renderer.globalData.fontManager.isLoaded\r\n && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas')\r\n && (this.imagePreloader.loadedFootages())\r\n ) {\r\n this.isLoaded = true;\r\n dataManager.completeData(this.animationData, this.renderer.globalData.fontManager);\r\n if (expressionsPlugin) {\r\n expressionsPlugin.initExpressions(this);\r\n }\r\n this.renderer.initItems();\r\n setTimeout(function () {\r\n this.trigger('DOMLoaded');\r\n }.bind(this), 0);\r\n this.gotoFrame();\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resize = function () {\r\n this.renderer.updateContainerSize();\r\n};\r\n\r\nAnimationItem.prototype.setSubframe = function (flag) {\r\n this.isSubframeEnabled = !!flag;\r\n};\r\n\r\nAnimationItem.prototype.gotoFrame = function () {\r\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\r\n\r\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\r\n this.currentFrame = this.timeCompleted;\r\n }\r\n this.trigger('enterFrame');\r\n this.renderFrame();\r\n};\r\n\r\nAnimationItem.prototype.renderFrame = function () {\r\n if (this.isLoaded === false || !this.renderer) {\r\n return;\r\n }\r\n try {\r\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\r\n } catch (error) {\r\n this.triggerRenderFrameError(error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.play = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.isPaused = false;\r\n this.audioController.resume();\r\n if (this._idle) {\r\n this._idle = false;\r\n this.trigger('_active');\r\n }\r\n }\r\n};\r\n\r\nAnimationItem.prototype.pause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === false) {\r\n this.isPaused = true;\r\n this._idle = true;\r\n this.trigger('_idle');\r\n this.audioController.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.togglePause = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n if (this.isPaused === true) {\r\n this.play();\r\n } else {\r\n this.pause();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.stop = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.pause();\r\n this.playCount = 0;\r\n this._completedLoop = false;\r\n this.setCurrentRawFrameValue(0);\r\n};\r\n\r\nAnimationItem.prototype.getMarkerData = function (markerName) {\r\n var marker;\r\n for (var i = 0; i < this.markers.length; i += 1) {\r\n marker = this.markers[i];\r\n if (marker.payload && marker.payload.name === markerName) {\r\n return marker;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n this.goToAndStop(marker.time, true);\r\n }\r\n } else if (isFrame) {\r\n this.setCurrentRawFrameValue(value);\r\n } else {\r\n this.setCurrentRawFrameValue(value * this.frameModifier);\r\n }\r\n this.pause();\r\n};\r\n\r\nAnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n var numValue = Number(value);\r\n if (isNaN(numValue)) {\r\n var marker = this.getMarkerData(value);\r\n if (marker) {\r\n if (!marker.duration) {\r\n this.goToAndStop(marker.time, true);\r\n } else {\r\n this.playSegments([marker.time, marker.time + marker.duration], true);\r\n }\r\n }\r\n } else {\r\n this.goToAndStop(numValue, isFrame, name);\r\n }\r\n this.play();\r\n};\r\n\r\nAnimationItem.prototype.advanceTime = function (value) {\r\n if (this.isPaused === true || this.isLoaded === false) {\r\n return;\r\n }\r\n var nextValue = this.currentRawFrame + value * this.frameModifier;\r\n var _isComplete = false;\r\n // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\r\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\r\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\r\n if (!this.loop || this.playCount === this.loop) {\r\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\r\n _isComplete = true;\r\n nextValue = this.totalFrames - 1;\r\n }\r\n } else if (nextValue >= this.totalFrames) {\r\n this.playCount += 1;\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\r\n this._completedLoop = true;\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n } else if (nextValue < 0) {\r\n if (!this.checkSegments(nextValue % this.totalFrames)) {\r\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) { // eslint-disable-line no-plusplus\r\n this.setCurrentRawFrameValue(this.totalFrames + (nextValue % this.totalFrames));\r\n if (!this._completedLoop) {\r\n this._completedLoop = true;\r\n } else {\r\n this.trigger('loopComplete');\r\n }\r\n } else {\r\n _isComplete = true;\r\n nextValue = 0;\r\n }\r\n }\r\n } else {\r\n this.setCurrentRawFrameValue(nextValue);\r\n }\r\n if (_isComplete) {\r\n this.setCurrentRawFrameValue(nextValue);\r\n this.pause();\r\n this.trigger('complete');\r\n }\r\n};\r\n\r\nAnimationItem.prototype.adjustSegment = function (arr, offset) {\r\n this.playCount = 0;\r\n if (arr[1] < arr[0]) {\r\n if (this.frameModifier > 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(-1);\r\n }\r\n }\r\n this.totalFrames = arr[0] - arr[1];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[1];\r\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\r\n } else if (arr[1] > arr[0]) {\r\n if (this.frameModifier < 0) {\r\n if (this.playSpeed < 0) {\r\n this.setSpeed(-this.playSpeed);\r\n } else {\r\n this.setDirection(1);\r\n }\r\n }\r\n this.totalFrames = arr[1] - arr[0];\r\n this.timeCompleted = this.totalFrames;\r\n this.firstFrame = arr[0];\r\n this.setCurrentRawFrameValue(0.001 + offset);\r\n }\r\n this.trigger('segmentStart');\r\n};\r\nAnimationItem.prototype.setSegment = function (init, end) {\r\n var pendingFrame = -1;\r\n if (this.isPaused) {\r\n if (this.currentRawFrame + this.firstFrame < init) {\r\n pendingFrame = init;\r\n } else if (this.currentRawFrame + this.firstFrame > end) {\r\n pendingFrame = end - init;\r\n }\r\n }\r\n\r\n this.firstFrame = init;\r\n this.totalFrames = end - init;\r\n this.timeCompleted = this.totalFrames;\r\n if (pendingFrame !== -1) {\r\n this.goToAndStop(pendingFrame, true);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.playSegments = function (arr, forceFlag) {\r\n if (forceFlag) {\r\n this.segments.length = 0;\r\n }\r\n if (typeof arr[0] === 'object') {\r\n var i;\r\n var len = arr.length;\r\n for (i = 0; i < len; i += 1) {\r\n this.segments.push(arr[i]);\r\n }\r\n } else {\r\n this.segments.push(arr);\r\n }\r\n if (this.segments.length && forceFlag) {\r\n this.adjustSegment(this.segments.shift(), 0);\r\n }\r\n if (this.isPaused) {\r\n this.play();\r\n }\r\n};\r\n\r\nAnimationItem.prototype.resetSegments = function (forceFlag) {\r\n this.segments.length = 0;\r\n this.segments.push([this.animationData.ip, this.animationData.op]);\r\n // this.segments.push([this.animationData.ip*this.frameRate,Math.floor(this.animationData.op - this.animationData.ip+this.animationData.ip*this.frameRate)]);\r\n if (forceFlag) {\r\n this.checkSegments(0);\r\n }\r\n};\r\nAnimationItem.prototype.checkSegments = function (offset) {\r\n if (this.segments.length) {\r\n this.adjustSegment(this.segments.shift(), offset);\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nAnimationItem.prototype.destroy = function (name) {\r\n if ((name && this.name !== name) || !this.renderer) {\r\n return;\r\n }\r\n this.renderer.destroy();\r\n this.imagePreloader.destroy();\r\n this.trigger('destroy');\r\n this._cbs = null;\r\n this.onEnterFrame = null;\r\n this.onLoopComplete = null;\r\n this.onComplete = null;\r\n this.onSegmentStart = null;\r\n this.onDestroy = null;\r\n this.renderer = null;\r\n this.renderer = null;\r\n this.imagePreloader = null;\r\n this.projectInterface = null;\r\n};\r\n\r\nAnimationItem.prototype.setCurrentRawFrameValue = function (value) {\r\n this.currentRawFrame = value;\r\n this.gotoFrame();\r\n};\r\n\r\nAnimationItem.prototype.setSpeed = function (val) {\r\n this.playSpeed = val;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setDirection = function (val) {\r\n this.playDirection = val < 0 ? -1 : 1;\r\n this.updaFrameModifier();\r\n};\r\n\r\nAnimationItem.prototype.setVolume = function (val, name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.setVolume(val);\r\n};\r\n\r\nAnimationItem.prototype.getVolume = function () {\r\n return this.audioController.getVolume();\r\n};\r\n\r\nAnimationItem.prototype.mute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.mute();\r\n};\r\n\r\nAnimationItem.prototype.unmute = function (name) {\r\n if (name && this.name !== name) {\r\n return;\r\n }\r\n this.audioController.unmute();\r\n};\r\n\r\nAnimationItem.prototype.updaFrameModifier = function () {\r\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\r\n this.audioController.setRate(this.playSpeed * this.playDirection);\r\n};\r\n\r\nAnimationItem.prototype.getPath = function () {\r\n return this.path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetsPath = function (assetData) {\r\n var path = '';\r\n if (assetData.e) {\r\n path = assetData.p;\r\n } else if (this.assetsPath) {\r\n var imagePath = assetData.p;\r\n if (imagePath.indexOf('images/') !== -1) {\r\n imagePath = imagePath.split('/')[1];\r\n }\r\n path = this.assetsPath + imagePath;\r\n } else {\r\n path = this.path;\r\n path += assetData.u ? assetData.u : '';\r\n path += assetData.p;\r\n }\r\n return path;\r\n};\r\n\r\nAnimationItem.prototype.getAssetData = function (id) {\r\n var i = 0;\r\n var len = this.assets.length;\r\n while (i < len) {\r\n if (id === this.assets[i].id) {\r\n return this.assets[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n};\r\n\r\nAnimationItem.prototype.hide = function () {\r\n this.renderer.hide();\r\n};\r\n\r\nAnimationItem.prototype.show = function () {\r\n this.renderer.show();\r\n};\r\n\r\nAnimationItem.prototype.getDuration = function (isFrame) {\r\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\r\n};\r\n\r\nAnimationItem.prototype.trigger = function (name) {\r\n if (this._cbs && this._cbs[name]) {\r\n switch (name) {\r\n case 'enterFrame':\r\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\r\n break;\r\n case 'loopComplete':\r\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n break;\r\n case 'complete':\r\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\r\n break;\r\n case 'segmentStart':\r\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n break;\r\n case 'destroy':\r\n this.triggerEvent(name, new BMDestroyEvent(name, this));\r\n break;\r\n default:\r\n this.triggerEvent(name);\r\n }\r\n }\r\n if (name === 'enterFrame' && this.onEnterFrame) {\r\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\r\n }\r\n if (name === 'loopComplete' && this.onLoopComplete) {\r\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\r\n }\r\n if (name === 'complete' && this.onComplete) {\r\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\r\n }\r\n if (name === 'segmentStart' && this.onSegmentStart) {\r\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\r\n }\r\n if (name === 'destroy' && this.onDestroy) {\r\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\r\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\nAnimationItem.prototype.triggerConfigError = function (nativeError) {\r\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\r\n this.triggerEvent('error', error);\r\n\r\n if (this.onError) {\r\n this.onError.call(this, error);\r\n }\r\n};\r\n\r\n/* global CompExpressionInterface, expressionsPlugin: writable */\r\n/* exported expressionsPlugin */\r\n\r\nvar Expressions = (function () {\r\n var ob = {};\r\n ob.initExpressions = initExpressions;\r\n\r\n function initExpressions(animation) {\r\n var stackCount = 0;\r\n var registers = [];\r\n\r\n function pushExpression() {\r\n stackCount += 1;\r\n }\r\n\r\n function popExpression() {\r\n stackCount -= 1;\r\n if (stackCount === 0) {\r\n releaseInstances();\r\n }\r\n }\r\n\r\n function registerExpressionProperty(expression) {\r\n if (registers.indexOf(expression) === -1) {\r\n registers.push(expression);\r\n }\r\n }\r\n\r\n function releaseInstances() {\r\n var i;\r\n var len = registers.length;\r\n for (i = 0; i < len; i += 1) {\r\n registers[i].release();\r\n }\r\n registers.length = 0;\r\n }\r\n\r\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\r\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\r\n animation.renderer.globalData.pushExpression = pushExpression;\r\n animation.renderer.globalData.popExpression = popExpression;\r\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\r\n }\r\n return ob;\r\n}());\r\n\r\nexpressionsPlugin = Expressions;\r\n\r\n/* eslint-disable camelcase, no-unused-vars */\r\n/* global BMMath, BezierFactory, createTypedArray, degToRads, shapePool */\r\n\r\nvar ExpressionManager = (function () {\r\n 'use strict';\r\n\r\n var ob = {};\r\n var Math = BMMath;\r\n var window = null;\r\n var document = null;\r\n\r\n function $bm_isInstanceOfArray(arr) {\r\n return arr.constructor === Array || arr.constructor === Float32Array;\r\n }\r\n\r\n function isNumerable(tOfV, v) {\r\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\r\n }\r\n\r\n function $bm_neg(a) {\r\n var tOfA = typeof a;\r\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\r\n return -a;\r\n }\r\n if ($bm_isInstanceOfArray(a)) {\r\n var i;\r\n var lenA = a.length;\r\n var retArr = [];\r\n for (i = 0; i < lenA; i += 1) {\r\n retArr[i] = -a[i];\r\n }\r\n return retArr;\r\n }\r\n if (a.propType) {\r\n return a.v;\r\n }\r\n return -a;\r\n }\r\n\r\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\r\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\r\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\r\n\r\n function sum(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (tOfA === 'string' || tOfB === 'string') {\r\n return a + b;\r\n }\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a + b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] += b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a + b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] + b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n var add = sum;\r\n\r\n function sub(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n if (tOfA === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (tOfB === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a - b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n a = a.slice(0);\r\n a[0] -= b;\r\n return a;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n b = b.slice(0);\r\n b[0] = a - b[0];\r\n return b;\r\n }\r\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\r\n var i = 0;\r\n var lenA = a.length;\r\n var lenB = b.length;\r\n var retArr = [];\r\n while (i < lenA || i < lenB) {\r\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\r\n retArr[i] = a[i] - b[i];\r\n } else {\r\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\r\n }\r\n i += 1;\r\n }\r\n return retArr;\r\n }\r\n return 0;\r\n }\r\n\r\n function mul(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a * b;\r\n }\r\n\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] * b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a * b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n\r\n function div(a, b) {\r\n var tOfA = typeof a;\r\n var tOfB = typeof b;\r\n var arr;\r\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\r\n return a / b;\r\n }\r\n var i;\r\n var len;\r\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\r\n len = a.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a[i] / b;\r\n }\r\n return arr;\r\n }\r\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\r\n len = b.length;\r\n arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = a / b[i];\r\n }\r\n return arr;\r\n }\r\n return 0;\r\n }\r\n function mod(a, b) {\r\n if (typeof a === 'string') {\r\n a = parseInt(a, 10);\r\n }\r\n if (typeof b === 'string') {\r\n b = parseInt(b, 10);\r\n }\r\n return a % b;\r\n }\r\n var $bm_sum = sum;\r\n var $bm_sub = sub;\r\n var $bm_mul = mul;\r\n var $bm_div = div;\r\n var $bm_mod = mod;\r\n\r\n function clamp(num, min, max) {\r\n if (min > max) {\r\n var mm = max;\r\n max = min;\r\n min = mm;\r\n }\r\n return Math.min(Math.max(num, min), max);\r\n }\r\n\r\n function radiansToDegrees(val) {\r\n return val / degToRads;\r\n }\r\n var radians_to_degrees = radiansToDegrees;\r\n\r\n function degreesToRadians(val) {\r\n return val * degToRads;\r\n }\r\n var degrees_to_radians = radiansToDegrees;\r\n\r\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\r\n\r\n function length(arr1, arr2) {\r\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\r\n arr2 = arr2 || 0;\r\n return Math.abs(arr1 - arr2);\r\n }\r\n if (!arr2) {\r\n arr2 = helperLengthArray;\r\n }\r\n var i;\r\n var len = Math.min(arr1.length, arr2.length);\r\n var addedLength = 0;\r\n for (i = 0; i < len; i += 1) {\r\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\r\n }\r\n return Math.sqrt(addedLength);\r\n }\r\n\r\n function normalize(vec) {\r\n return div(vec, length(vec));\r\n }\r\n\r\n function rgbToHsl(val) {\r\n var r = val[0]; var g = val[1]; var b = val[2];\r\n var max = Math.max(r, g, b);\r\n var min = Math.min(r, g, b);\r\n var h;\r\n var s;\r\n var l = (max + min) / 2;\r\n\r\n if (max === min) {\r\n h = 0; // achromatic\r\n s = 0; // achromatic\r\n } else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch (max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n default: break;\r\n }\r\n h /= 6;\r\n }\r\n\r\n return [h, s, l, val[3]];\r\n }\r\n\r\n function hue2rgb(p, q, t) {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n }\r\n\r\n function hslToRgb(val) {\r\n var h = val[0];\r\n var s = val[1];\r\n var l = val[2];\r\n\r\n var r;\r\n var g;\r\n var b;\r\n\r\n if (s === 0) {\r\n r = l; // achromatic\r\n b = l; // achromatic\r\n g = l; // achromatic\r\n } else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1 / 3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1 / 3);\r\n }\r\n\r\n return [r, g, b, val[3]];\r\n }\r\n\r\n function linear(t, tMin, tMax, value1, value2) {\r\n if (value1 === undefined || value2 === undefined) {\r\n value1 = tMin;\r\n value2 = tMax;\r\n tMin = 0;\r\n tMax = 1;\r\n }\r\n if (tMax < tMin) {\r\n var _tMin = tMax;\r\n tMax = tMin;\r\n tMin = _tMin;\r\n }\r\n if (t <= tMin) {\r\n return value1;\r\n } if (t >= tMax) {\r\n return value2;\r\n }\r\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\r\n if (!value1.length) {\r\n return value1 + (value2 - value1) * perc;\r\n }\r\n var i;\r\n var len = value1.length;\r\n var arr = createTypedArray('float32', len);\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\r\n }\r\n return arr;\r\n }\r\n function random(min, max) {\r\n if (max === undefined) {\r\n if (min === undefined) {\r\n min = 0;\r\n max = 1;\r\n } else {\r\n max = min;\r\n min = undefined;\r\n }\r\n }\r\n if (max.length) {\r\n var i;\r\n var len = max.length;\r\n if (!min) {\r\n min = createTypedArray('float32', len);\r\n }\r\n var arr = createTypedArray('float32', len);\r\n var rnd = BMMath.random();\r\n for (i = 0; i < len; i += 1) {\r\n arr[i] = min[i] + rnd * (max[i] - min[i]);\r\n }\r\n return arr;\r\n }\r\n if (min === undefined) {\r\n min = 0;\r\n }\r\n var rndm = BMMath.random();\r\n return min + rndm * (max - min);\r\n }\r\n\r\n function createPath(points, inTangents, outTangents, closed) {\r\n var i;\r\n var len = points.length;\r\n var path = shapePool.newElement();\r\n path.setPathData(!!closed, len);\r\n var arrPlaceholder = [0, 0];\r\n var inVertexPoint;\r\n var outVertexPoint;\r\n for (i = 0; i < len; i += 1) {\r\n inVertexPoint = (inTangents && inTangents[i]) ? inTangents[i] : arrPlaceholder;\r\n outVertexPoint = (outTangents && outTangents[i]) ? outTangents[i] : arrPlaceholder;\r\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\r\n }\r\n return path;\r\n }\r\n\r\n function initiateExpression(elem, data, property) {\r\n var val = data.x;\r\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\r\n var _needsRandom = val.indexOf('random') !== -1;\r\n var elemType = elem.data.ty;\r\n var transform;\r\n var $bm_transform;\r\n var content;\r\n var effect;\r\n var thisProperty = property;\r\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\r\n Object.defineProperty(thisProperty, 'value', {\r\n get: function () {\r\n return thisProperty.v;\r\n },\r\n });\r\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\r\n elem.comp.displayStartTime = 0;\r\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n var width = elem.data.sw ? elem.data.sw : 0;\r\n var height = elem.data.sh ? elem.data.sh : 0;\r\n var name = elem.data.nm;\r\n var loopIn;\r\n var loop_in;\r\n var loopOut;\r\n var loop_out;\r\n var smooth;\r\n var toWorld;\r\n var fromWorld;\r\n var fromComp;\r\n var toComp;\r\n var fromCompToSurface;\r\n var position;\r\n var rotation;\r\n var anchorPoint;\r\n var scale;\r\n var thisLayer;\r\n var thisComp;\r\n var mask;\r\n var valueAtTime;\r\n var velocityAtTime;\r\n\r\n var scoped_bm_rt;\r\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\r\n var numKeys = property.kf ? data.k.length : 0;\r\n\r\n var active = !this.data || this.data.hd !== true;\r\n\r\n var wiggle = function wiggle(freq, amp) {\r\n var iWiggle;\r\n var j;\r\n var lenWiggle = this.pv.length ? this.pv.length : 1;\r\n var addedAmps = createTypedArray('float32', lenWiggle);\r\n freq = 5;\r\n var iterations = Math.floor(time * freq);\r\n iWiggle = 0;\r\n j = 0;\r\n while (iWiggle < iterations) {\r\n // var rnd = BMMath.random();\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n addedAmps[j] += -amp + amp * 2 * BMMath.random();\r\n // addedAmps[j] += -amp + amp*2*rnd;\r\n }\r\n iWiggle += 1;\r\n }\r\n // var rnd2 = BMMath.random();\r\n var periods = time * freq;\r\n var perc = periods - Math.floor(periods);\r\n var arr = createTypedArray('float32', lenWiggle);\r\n if (lenWiggle > 1) {\r\n for (j = 0; j < lenWiggle; j += 1) {\r\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\r\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\r\n }\r\n return arr;\r\n }\r\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\r\n }.bind(this);\r\n\r\n if (thisProperty.loopIn) {\r\n loopIn = thisProperty.loopIn.bind(thisProperty);\r\n loop_in = loopIn;\r\n }\r\n\r\n if (thisProperty.loopOut) {\r\n loopOut = thisProperty.loopOut.bind(thisProperty);\r\n loop_out = loopOut;\r\n }\r\n\r\n if (thisProperty.smooth) {\r\n smooth = thisProperty.smooth.bind(thisProperty);\r\n }\r\n\r\n function loopInDuration(type, duration) {\r\n return loopIn(type, duration, true);\r\n }\r\n\r\n function loopOutDuration(type, duration) {\r\n return loopOut(type, duration, true);\r\n }\r\n\r\n if (this.getValueAtTime) {\r\n valueAtTime = this.getValueAtTime.bind(this);\r\n }\r\n\r\n if (this.getVelocityAtTime) {\r\n velocityAtTime = this.getVelocityAtTime.bind(this);\r\n }\r\n\r\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\r\n\r\n function lookAt(elem1, elem2) {\r\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\r\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\r\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\r\n return [yaw, pitch, 0];\r\n }\r\n\r\n function easeOut(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function easeIn(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function ease(t, tMin, tMax, val1, val2) {\r\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\r\n }\r\n\r\n function applyEase(fn, t, tMin, tMax, val1, val2) {\r\n if (val1 === undefined) {\r\n val1 = tMin;\r\n val2 = tMax;\r\n } else {\r\n t = (t - tMin) / (tMax - tMin);\r\n }\r\n if (t > 1) {\r\n t = 1;\r\n } else if (t < 0) {\r\n t = 0;\r\n }\r\n var mult = fn(t);\r\n if ($bm_isInstanceOfArray(val1)) {\r\n var iKey;\r\n var lenKey = val1.length;\r\n var arr = createTypedArray('float32', lenKey);\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\r\n }\r\n return arr;\r\n }\r\n return (val2 - val1) * mult + val1;\r\n }\r\n\r\n function nearestKey(time) {\r\n var iKey;\r\n var lenKey = data.k.length;\r\n var index;\r\n var keyTime;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n index = 0;\r\n keyTime = 0;\r\n } else {\r\n index = -1;\r\n time *= elem.comp.globalData.frameRate;\r\n if (time < data.k[0].t) {\r\n index = 1;\r\n keyTime = data.k[0].t;\r\n } else {\r\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\r\n if (time === data.k[iKey].t) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n break;\r\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\r\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\r\n index = iKey + 2;\r\n keyTime = data.k[iKey + 1].t;\r\n } else {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n break;\r\n }\r\n }\r\n if (index === -1) {\r\n index = iKey + 1;\r\n keyTime = data.k[iKey].t;\r\n }\r\n }\r\n }\r\n var obKey = {};\r\n obKey.index = index;\r\n obKey.time = keyTime / elem.comp.globalData.frameRate;\r\n return obKey;\r\n }\r\n\r\n function key(ind) {\r\n var obKey;\r\n var iKey;\r\n var lenKey;\r\n if (!data.k.length || typeof (data.k[0]) === 'number') {\r\n throw new Error('The property has no keyframe at index ' + ind);\r\n }\r\n ind -= 1;\r\n obKey = {\r\n time: data.k[ind].t / elem.comp.globalData.frameRate,\r\n value: [],\r\n };\r\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\r\n\r\n lenKey = arr.length;\r\n for (iKey = 0; iKey < lenKey; iKey += 1) {\r\n obKey[iKey] = arr[iKey];\r\n obKey.value[iKey] = arr[iKey];\r\n }\r\n return obKey;\r\n }\r\n\r\n function framesToTime(frames, fps) {\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return frames / fps;\r\n }\r\n\r\n function timeToFrames(t, fps) {\r\n if (!t && t !== 0) {\r\n t = time;\r\n }\r\n if (!fps) {\r\n fps = elem.comp.globalData.frameRate;\r\n }\r\n return t * fps;\r\n }\r\n\r\n function seedRandom(seed) {\r\n BMMath.seedrandom(randSeed + seed);\r\n }\r\n\r\n function sourceRectAtTime() {\r\n return elem.sourceRectAtTime();\r\n }\r\n\r\n function substring(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substring(init);\r\n }\r\n return value.substring(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function substr(init, end) {\r\n if (typeof value === 'string') {\r\n if (end === undefined) {\r\n return value.substr(init);\r\n }\r\n return value.substr(init, end);\r\n }\r\n return '';\r\n }\r\n\r\n function posterizeTime(framesPerSecond) {\r\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\r\n value = valueAtTime(time);\r\n }\r\n\r\n var time;\r\n var velocity;\r\n var value;\r\n var text;\r\n var textIndex;\r\n var textTotal;\r\n var selectorValue;\r\n var index = elem.data.ind;\r\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n var parent;\r\n var randSeed = Math.floor(Math.random() * 1000000);\r\n var globalData = elem.globalData;\r\n function executeExpression(_value) {\r\n // globalData.pushExpression();\r\n value = _value;\r\n if (_needsRandom) {\r\n seedRandom(randSeed);\r\n }\r\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\r\n return value;\r\n }\r\n if (this.propType === 'textSelector') {\r\n textIndex = this.textIndex;\r\n textTotal = this.textTotal;\r\n selectorValue = this.selectorValue;\r\n }\r\n if (!thisLayer) {\r\n text = elem.layerInterface.text;\r\n thisLayer = elem.layerInterface;\r\n thisComp = elem.comp.compInterface;\r\n toWorld = thisLayer.toWorld.bind(thisLayer);\r\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\r\n fromComp = thisLayer.fromComp.bind(thisLayer);\r\n toComp = thisLayer.toComp.bind(thisLayer);\r\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\r\n fromCompToSurface = fromComp;\r\n }\r\n if (!transform) {\r\n transform = elem.layerInterface('ADBE Transform Group');\r\n $bm_transform = transform;\r\n if (transform) {\r\n anchorPoint = transform.anchorPoint;\r\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\r\n }\r\n }\r\n\r\n if (elemType === 4 && !content) {\r\n content = thisLayer('ADBE Root Vectors Group');\r\n }\r\n if (!effect) {\r\n effect = thisLayer(4);\r\n }\r\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\r\n if (hasParent && !parent) {\r\n parent = elem.hierarchy[0].layerInterface;\r\n }\r\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n if (needsVelocity) {\r\n velocity = velocityAtTime(time);\r\n }\r\n expression_function();\r\n this.frameExpressionId = elem.globalData.frameId;\r\n\r\n // TODO: Check if it's possible to return on ShapeInterface the .v value\r\n if (scoped_bm_rt.propType === 'shape') {\r\n scoped_bm_rt = scoped_bm_rt.v;\r\n }\r\n // globalData.popExpression();\r\n return scoped_bm_rt;\r\n }\r\n return executeExpression;\r\n }\r\n\r\n ob.initiateExpression = initiateExpression;\r\n return ob;\r\n}());\r\n\r\n/* global ExpressionManager, createTypedArray */\r\n/* exported expressionHelpers */\r\n\r\nvar expressionHelpers = (function () {\r\n function searchExpressions(elem, data, prop) {\r\n if (data.x) {\r\n prop.k = true;\r\n prop.x = true;\r\n prop.initiateExpression = ExpressionManager.initiateExpression;\r\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\r\n }\r\n }\r\n\r\n function getValueAtTime(frameNum) {\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastFrame) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\r\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\r\n this._cachingAtTime.lastFrame = frameNum;\r\n }\r\n return this._cachingAtTime.value;\r\n }\r\n\r\n function getSpeedAtTime(frameNum) {\r\n var delta = -0.01;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var speed = 0;\r\n if (v1.length) {\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n speed += Math.pow(v2[i] - v1[i], 2);\r\n }\r\n speed = Math.sqrt(speed) * 100;\r\n } else {\r\n speed = 0;\r\n }\r\n return speed;\r\n }\r\n\r\n function getVelocityAtTime(frameNum) {\r\n if (this.vel !== undefined) {\r\n return this.vel;\r\n }\r\n var delta = -0.001;\r\n // frameNum += this.elem.data.st;\r\n var v1 = this.getValueAtTime(frameNum);\r\n var v2 = this.getValueAtTime(frameNum + delta);\r\n var velocity;\r\n if (v1.length) {\r\n velocity = createTypedArray('float32', v1.length);\r\n var i;\r\n for (i = 0; i < v1.length; i += 1) {\r\n // removing frameRate\r\n // if needed, don't add it here\r\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\r\n velocity[i] = (v2[i] - v1[i]) / delta;\r\n }\r\n } else {\r\n velocity = (v2 - v1) / delta;\r\n }\r\n return velocity;\r\n }\r\n\r\n function getStaticValueAtTime() {\r\n return this.pv;\r\n }\r\n\r\n function setGroupProperty(propertyGroup) {\r\n this.propertyGroup = propertyGroup;\r\n }\r\n\r\n return {\r\n searchExpressions: searchExpressions,\r\n getSpeedAtTime: getSpeedAtTime,\r\n getVelocityAtTime: getVelocityAtTime,\r\n getValueAtTime: getValueAtTime,\r\n getStaticValueAtTime: getStaticValueAtTime,\r\n setGroupProperty: setGroupProperty,\r\n };\r\n}());\r\n\r\n/* global createTypedArray, Matrix, TransformPropertyFactory, expressionHelpers, PropertyFactory, expressionHelpers,\r\ninitialDefaultFrame, shapePool, ShapePropertyFactory, bez, extendPrototype, ExpressionManager, createSizedArray */\r\n\r\n(function addPropertyDecorator() {\r\n function loopOut(type, duration, durationFlag) {\r\n if (!this.k || !this.keyframes) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\r\n if (currentFrame <= lastKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var firstKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\r\n } else {\r\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\r\n }\r\n firstKeyFrame = lastKeyFrame - cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (iterations % 2 !== 0) {\r\n return this.getValueAtTime(((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\r\n }\r\n return ret;\r\n }\r\n return (endV - initV) * repeats + current;\r\n } else if (type === 'continue') {\r\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(lastValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\r\n }\r\n return ret;\r\n }\r\n return lastValue + (lastValue - nextLastValue) * (((currentFrame - lastKeyFrame)) / 0.001);\r\n }\r\n return this.getValueAtTime((((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function loopIn(type, duration, durationFlag) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n type = type ? type.toLowerCase() : '';\r\n var currentFrame = this.comp.renderedFrame;\r\n var keyframes = this.keyframes;\r\n var firstKeyFrame = keyframes[0].t;\r\n if (currentFrame >= firstKeyFrame) {\r\n return this.pv;\r\n }\r\n var cycleDuration;\r\n var lastKeyFrame;\r\n if (!durationFlag) {\r\n if (!duration || duration > keyframes.length - 1) {\r\n duration = keyframes.length - 1;\r\n }\r\n lastKeyFrame = keyframes[duration].t;\r\n cycleDuration = lastKeyFrame - firstKeyFrame;\r\n } else {\r\n if (!duration) {\r\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\r\n } else {\r\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\r\n }\r\n lastKeyFrame = firstKeyFrame + cycleDuration;\r\n }\r\n var i;\r\n var len;\r\n var ret;\r\n if (type === 'pingpong') {\r\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\r\n if (iterations % 2 === 0) {\r\n return this.getValueAtTime((((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n }\r\n } else if (type === 'offset') {\r\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\r\n var current = this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration) + firstKeyFrame) / this.comp.globalData.frameRate, 0);\r\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\r\n if (this.pv.length) {\r\n ret = new Array(initV.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\r\n }\r\n return ret;\r\n }\r\n return current - (endV - initV) * repeats;\r\n } else if (type === 'continue') {\r\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\r\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\r\n if (this.pv.length) {\r\n ret = new Array(firstValue.length);\r\n len = ret.length;\r\n for (i = 0; i < len; i += 1) {\r\n ret[i] = firstValue[i] + ((firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return ret;\r\n }\r\n return firstValue + ((firstValue - nextFirstValue) * (firstKeyFrame - currentFrame)) / 0.001;\r\n }\r\n return this.getValueAtTime(((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame))) / this.comp.globalData.frameRate, 0); // eslint-disable-line\r\n\r\n }\r\n\r\n function smooth(width, samples) {\r\n if (!this.k) {\r\n return this.pv;\r\n }\r\n width = (width || 0.4) * 0.5;\r\n samples = Math.floor(samples || 5);\r\n if (samples <= 1) {\r\n return this.pv;\r\n }\r\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\r\n var initFrame = currentTime - width;\r\n var endFrame = currentTime + width;\r\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\r\n var i = 0;\r\n var j = 0;\r\n var value;\r\n if (this.pv.length) {\r\n value = createTypedArray('float32', this.pv.length);\r\n } else {\r\n value = 0;\r\n }\r\n var sampleValue;\r\n while (i < samples) {\r\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] += sampleValue[j];\r\n }\r\n } else {\r\n value += sampleValue;\r\n }\r\n i += 1;\r\n }\r\n if (this.pv.length) {\r\n for (j = 0; j < this.pv.length; j += 1) {\r\n value[j] /= samples;\r\n }\r\n } else {\r\n value /= samples;\r\n }\r\n return value;\r\n }\r\n\r\n function getTransformValueAtTime(time) {\r\n if (!this._transformCachingAtTime) {\r\n this._transformCachingAtTime = {\r\n v: new Matrix(),\r\n };\r\n }\r\n /// /\r\n var matrix = this._transformCachingAtTime.v;\r\n matrix.cloneFromProps(this.pre.props);\r\n if (this.appliedTransformations < 1) {\r\n var anchor = this.a.getValueAtTime(time);\r\n matrix.translate(\r\n -anchor[0] * this.a.mult,\r\n -anchor[1] * this.a.mult,\r\n anchor[2] * this.a.mult\r\n );\r\n }\r\n if (this.appliedTransformations < 2) {\r\n var scale = this.s.getValueAtTime(time);\r\n matrix.scale(\r\n scale[0] * this.s.mult,\r\n scale[1] * this.s.mult,\r\n scale[2] * this.s.mult\r\n );\r\n }\r\n if (this.sk && this.appliedTransformations < 3) {\r\n var skew = this.sk.getValueAtTime(time);\r\n var skewAxis = this.sa.getValueAtTime(time);\r\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\r\n }\r\n if (this.r && this.appliedTransformations < 4) {\r\n var rotation = this.r.getValueAtTime(time);\r\n matrix.rotate(-rotation * this.r.mult);\r\n } else if (!this.r && this.appliedTransformations < 4) {\r\n var rotationZ = this.rz.getValueAtTime(time);\r\n var rotationY = this.ry.getValueAtTime(time);\r\n var rotationX = this.rx.getValueAtTime(time);\r\n var orientation = this.or.getValueAtTime(time);\r\n matrix.rotateZ(-rotationZ * this.rz.mult)\r\n .rotateY(rotationY * this.ry.mult)\r\n .rotateX(rotationX * this.rx.mult)\r\n .rotateZ(-orientation[2] * this.or.mult)\r\n .rotateY(orientation[1] * this.or.mult)\r\n .rotateX(orientation[0] * this.or.mult);\r\n }\r\n if (this.data.p && this.data.p.s) {\r\n var positionX = this.px.getValueAtTime(time);\r\n var positionY = this.py.getValueAtTime(time);\r\n if (this.data.p.z) {\r\n var positionZ = this.pz.getValueAtTime(time);\r\n matrix.translate(\r\n positionX * this.px.mult,\r\n positionY * this.py.mult,\r\n -positionZ * this.pz.mult\r\n );\r\n } else {\r\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\r\n }\r\n } else {\r\n var position = this.p.getValueAtTime(time);\r\n matrix.translate(\r\n position[0] * this.p.mult,\r\n position[1] * this.p.mult,\r\n -position[2] * this.p.mult\r\n );\r\n }\r\n return matrix;\r\n /// /\r\n }\r\n\r\n function getTransformStaticValueAtTime() {\r\n return this.v.clone(new Matrix());\r\n }\r\n\r\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\r\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\r\n var prop = getTransformProperty(elem, data, container);\r\n if (prop.dynamicProperties.length) {\r\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n return prop;\r\n };\r\n\r\n var propertyGetProp = PropertyFactory.getProp;\r\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\r\n var prop = propertyGetProp(elem, data, type, mult, container);\r\n // prop.getVelocityAtTime = getVelocityAtTime;\r\n // prop.loopOut = loopOut;\r\n // prop.loopIn = loopIn;\r\n if (prop.kf) {\r\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\r\n } else {\r\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\r\n }\r\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\r\n prop.loopOut = loopOut;\r\n prop.loopIn = loopIn;\r\n prop.smooth = smooth;\r\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\r\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\r\n prop.numKeys = data.a === 1 ? data.k.length : 0;\r\n prop.propertyIndex = data.ix;\r\n var value = 0;\r\n if (type !== 0) {\r\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\r\n }\r\n prop._cachingAtTime = {\r\n lastFrame: initialDefaultFrame,\r\n lastIndex: 0,\r\n value: value,\r\n };\r\n expressionHelpers.searchExpressions(elem, data, prop);\r\n if (prop.k) {\r\n container.addDynamicProperty(prop);\r\n }\r\n\r\n return prop;\r\n };\r\n\r\n function getShapeValueAtTime(frameNum) {\r\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\r\n if (!this._cachingAtTime) {\r\n this._cachingAtTime = {\r\n shapeValue: shapePool.clone(this.pv),\r\n lastIndex: 0,\r\n lastTime: initialDefaultFrame,\r\n };\r\n }\r\n\r\n frameNum *= this.elem.globalData.frameRate;\r\n frameNum -= this.offsetTime;\r\n if (frameNum !== this._cachingAtTime.lastTime) {\r\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\r\n this._cachingAtTime.lastTime = frameNum;\r\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\r\n }\r\n return this._cachingAtTime.shapeValue;\r\n }\r\n\r\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\r\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\r\n\r\n function ShapeExpressions() {}\r\n ShapeExpressions.prototype = {\r\n vertices: function (prop, time) {\r\n if (this.k) {\r\n this.getValue();\r\n }\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n var i;\r\n var len = shapePath._length;\r\n var vertices = shapePath[prop];\r\n var points = shapePath.v;\r\n var arr = createSizedArray(len);\r\n for (i = 0; i < len; i += 1) {\r\n if (prop === 'i' || prop === 'o') {\r\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\r\n } else {\r\n arr[i] = [vertices[i][0], vertices[i][1]];\r\n }\r\n }\r\n return arr;\r\n },\r\n points: function (time) {\r\n return this.vertices('v', time);\r\n },\r\n inTangents: function (time) {\r\n return this.vertices('i', time);\r\n },\r\n outTangents: function (time) {\r\n return this.vertices('o', time);\r\n },\r\n isClosed: function () {\r\n return this.v.c;\r\n },\r\n pointOnPath: function (perc, time) {\r\n var shapePath = this.v;\r\n if (time !== undefined) {\r\n shapePath = this.getValueAtTime(time, 0);\r\n }\r\n if (!this._segmentsLength) {\r\n this._segmentsLength = bez.getSegmentsLength(shapePath);\r\n }\r\n\r\n var segmentsLength = this._segmentsLength;\r\n var lengths = segmentsLength.lengths;\r\n var lengthPos = segmentsLength.totalLength * perc;\r\n var i = 0;\r\n var len = lengths.length;\r\n var accumulatedLength = 0;\r\n var pt;\r\n while (i < len) {\r\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\r\n var initIndex = i;\r\n var endIndex = (shapePath.c && i === len - 1) ? 0 : i + 1;\r\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\r\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\r\n break;\r\n } else {\r\n accumulatedLength += lengths[i].addedLength;\r\n }\r\n i += 1;\r\n }\r\n if (!pt) {\r\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\r\n }\r\n return pt;\r\n },\r\n vectorOnPath: function (perc, time, vectorType) {\r\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\r\n if (perc == 1) { // eslint-disable-line eqeqeq\r\n perc = this.v.c;\r\n } else if (perc == 0) { // eslint-disable-line eqeqeq\r\n perc = 0.999;\r\n }\r\n var pt1 = this.pointOnPath(perc, time);\r\n var pt2 = this.pointOnPath(perc + 0.001, time);\r\n var xLength = pt2[0] - pt1[0];\r\n var yLength = pt2[1] - pt1[1];\r\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\r\n if (magnitude === 0) {\r\n return [0, 0];\r\n }\r\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\r\n return unitVector;\r\n },\r\n tangentOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'tangent');\r\n },\r\n normalOnPath: function (perc, time) {\r\n return this.vectorOnPath(perc, time, 'normal');\r\n },\r\n setGroupProperty: expressionHelpers.setGroupProperty,\r\n getValueAtTime: expressionHelpers.getStaticValueAtTime,\r\n };\r\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\r\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\r\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\r\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\r\n\r\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\r\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\r\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\r\n prop.propertyIndex = data.ix;\r\n prop.lock = false;\r\n if (type === 3) {\r\n expressionHelpers.searchExpressions(elem, data.pt, prop);\r\n } else if (type === 4) {\r\n expressionHelpers.searchExpressions(elem, data.ks, prop);\r\n }\r\n if (prop.k) {\r\n elem.addDynamicProperty(prop);\r\n }\r\n return prop;\r\n };\r\n}());\r\n\r\n/* global ExpressionManager, TextProperty */\r\n\r\n(function addDecorator() {\r\n function searchExpressions() {\r\n if (this.data.d.x) {\r\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\r\n this.addEffect(this.getExpressionValue.bind(this));\r\n return true;\r\n }\r\n return null;\r\n }\r\n\r\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\r\n var newValue = this.calculateExpression(text);\r\n if (currentValue.t !== newValue) {\r\n var newData = {};\r\n this.copyData(newData, currentValue);\r\n newData.t = newValue.toString();\r\n newData.__complete = false;\r\n return newData;\r\n }\r\n return currentValue;\r\n };\r\n\r\n TextProperty.prototype.searchProperty = function () {\r\n var isKeyframed = this.searchKeyframes();\r\n var hasExpressions = this.searchExpressions();\r\n this.kf = isKeyframed || hasExpressions;\r\n return this.kf;\r\n };\r\n\r\n TextProperty.prototype.searchExpressions = searchExpressions;\r\n}());\r\n\r\n/* global propertyGroupFactory, PropertyInterface */\r\n/* exported ShapePathInterface */\r\n\r\nvar ShapePathInterface = (\r\n\r\n function () {\r\n return function pathInterfaceFactory(shape, view, propertyGroup) {\r\n var prop = view.sh;\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\r\n return interfaceFunction.path;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n path: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n shape: {\r\n get: function () {\r\n if (prop.k) {\r\n prop.getValue();\r\n }\r\n return prop;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n ix: { value: shape.ix },\r\n propertyIndex: { value: shape.ix },\r\n mn: { value: shape.mn },\r\n propertyGroup: { value: propertyGroup },\r\n });\r\n return interfaceFunction;\r\n };\r\n }()\r\n);\r\n\r\n/* exported propertyGroupFactory */\r\n\r\nvar propertyGroupFactory = (function () {\r\n return function (interfaceFunction, parentPropertyGroup) {\r\n return function (val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return parentPropertyGroup(val - 1);\r\n };\r\n };\r\n}());\r\n\r\n/* exported PropertyInterface */\r\n\r\nvar PropertyInterface = (function () {\r\n return function (propertyName, propertyGroup) {\r\n var interfaceFunction = {\r\n _name: propertyName,\r\n };\r\n\r\n function _propertyGroup(val) {\r\n val = val === undefined ? 1 : val;\r\n if (val <= 0) {\r\n return interfaceFunction;\r\n }\r\n return propertyGroup(val - 1);\r\n }\r\n\r\n return _propertyGroup;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface, PropertyInterface, propertyGroupFactory, ShapePathInterface */\r\n/* exported ShapeExpressionInterface */\r\n\r\nvar ShapeExpressionInterface = (function () {\r\n function iterateElements(shapes, view, propertyGroup) {\r\n var arr = [];\r\n var i;\r\n var len = shapes ? shapes.length : 0;\r\n for (i = 0; i < len; i += 1) {\r\n if (shapes[i].ty === 'gr') {\r\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'fl') {\r\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'st') {\r\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tm') {\r\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'tr') {\r\n // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\r\n } else if (shapes[i].ty === 'el') {\r\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sr') {\r\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'sh') {\r\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rc') {\r\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rd') {\r\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n } else if (shapes[i].ty === 'rp') {\r\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function contentsInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaces;\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n if (typeof value === 'number') {\r\n return interfaces[value - 1];\r\n }\r\n return null;\r\n };\r\n\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\r\n interfaceFunction.numProperties = interfaces.length;\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.transform = transformInterface;\r\n interfaceFunction.propertyIndex = shape.cix;\r\n interfaceFunction._name = shape.nm;\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n function groupInterfaceFactory(shape, view, propertyGroup) {\r\n var interfaceFunction = function _interfaceFunction(value) {\r\n switch (value) {\r\n case 'ADBE Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return interfaceFunction.content;\r\n // Not necessary for now. Keeping them here in case a new case appears\r\n // case 'ADBE Vector Transform Group':\r\n // case 3:\r\n default:\r\n return interfaceFunction.transform;\r\n }\r\n };\r\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\r\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\r\n interfaceFunction.content = content;\r\n interfaceFunction.transform = transformInterface;\r\n Object.defineProperty(interfaceFunction, '_name', {\r\n get: function () {\r\n return shape.nm;\r\n },\r\n });\r\n // interfaceFunction.content = interfaceFunction;\r\n interfaceFunction.numProperties = shape.np;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.nm = shape.nm;\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function fillInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function strokeInterfaceFactory(shape, view, propertyGroup) {\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\r\n function addPropertyToDashOb(i) {\r\n Object.defineProperty(dashOb, shape.d[i].nm, {\r\n get: ExpressionPropertyInterface(view.d.dataProps[i].p),\r\n });\r\n }\r\n var i;\r\n var len = shape.d ? shape.d.length : 0;\r\n var dashOb = {};\r\n for (i = 0; i < len; i += 1) {\r\n addPropertyToDashOb(i);\r\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\r\n }\r\n\r\n function interfaceFunction(val) {\r\n if (val === 'Color' || val === 'color') {\r\n return interfaceFunction.color;\r\n } if (val === 'Opacity' || val === 'opacity') {\r\n return interfaceFunction.opacity;\r\n } if (val === 'Stroke Width' || val === 'stroke width') {\r\n return interfaceFunction.strokeWidth;\r\n }\r\n return null;\r\n }\r\n Object.defineProperties(interfaceFunction, {\r\n color: {\r\n get: ExpressionPropertyInterface(view.c),\r\n },\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n strokeWidth: {\r\n get: ExpressionPropertyInterface(view.w),\r\n },\r\n dash: {\r\n get: function () {\r\n return dashOb;\r\n },\r\n },\r\n _name: { value: shape.nm },\r\n mn: { value: shape.mn },\r\n });\r\n\r\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\r\n return interfaceFunction;\r\n }\r\n\r\n function trimInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(val) {\r\n if (val === shape.e.ix || val === 'End' || val === 'end') {\r\n return interfaceFunction.end;\r\n }\r\n if (val === shape.s.ix) {\r\n return interfaceFunction.start;\r\n }\r\n if (val === shape.o.ix) {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n\r\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\r\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\r\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n interfaceFunction.propertyIndex = shape.ix;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n start: {\r\n get: ExpressionPropertyInterface(view.s),\r\n },\r\n end: {\r\n get: ExpressionPropertyInterface(view.e),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(view.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function transformInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.a.ix === value || value === 'Anchor Point') {\r\n return interfaceFunction.anchorPoint;\r\n }\r\n if (shape.o.ix === value || value === 'Opacity') {\r\n return interfaceFunction.opacity;\r\n }\r\n if (shape.p.ix === value || value === 'Position') {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.s.ix === value || value === 'Scale') {\r\n return interfaceFunction.scale;\r\n }\r\n if ((shape.sk && shape.sk.ix === value) || value === 'Skew') {\r\n return interfaceFunction.skew;\r\n }\r\n if ((shape.sa && shape.sa.ix === value) || value === 'Skew Axis') {\r\n return interfaceFunction.skewAxis;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\r\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\r\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (view.transform.mProps.sk) {\r\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\r\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\r\n }\r\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n opacity: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.o),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.p),\r\n },\r\n anchorPoint: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.a),\r\n },\r\n scale: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.s),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.r),\r\n },\r\n skew: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sk),\r\n },\r\n skewAxis: {\r\n get: ExpressionPropertyInterface(view.transform.mProps.sa),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.ty = 'tr';\r\n interfaceFunction.mn = shape.mn;\r\n interfaceFunction.propertyGroup = propertyGroup;\r\n return interfaceFunction;\r\n }\r\n\r\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.s.ix === value) {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n interfaceFunction.propertyIndex = shape.ix;\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function starInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.rotation;\r\n }\r\n if (shape.pt.ix === value) {\r\n return interfaceFunction.points;\r\n }\r\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\r\n return interfaceFunction.outerRadius;\r\n }\r\n if (shape.os.ix === value) {\r\n return interfaceFunction.outerRoundness;\r\n }\r\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\r\n return interfaceFunction.innerRadius;\r\n }\r\n if (shape.is && shape.is.ix === value) {\r\n return interfaceFunction.innerRoundness;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\r\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\r\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n if (shape.ir) {\r\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\r\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\r\n }\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n rotation: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n points: {\r\n get: ExpressionPropertyInterface(prop.pt),\r\n },\r\n outerRadius: {\r\n get: ExpressionPropertyInterface(prop.or),\r\n },\r\n outerRoundness: {\r\n get: ExpressionPropertyInterface(prop.os),\r\n },\r\n innerRadius: {\r\n get: ExpressionPropertyInterface(prop.ir),\r\n },\r\n innerRoundness: {\r\n get: ExpressionPropertyInterface(prop.is),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function rectInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.p.ix === value) {\r\n return interfaceFunction.position;\r\n }\r\n if (shape.r.ix === value) {\r\n return interfaceFunction.roundness;\r\n }\r\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\r\n return interfaceFunction.size;\r\n }\r\n return null;\r\n }\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n\r\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\r\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\r\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n position: {\r\n get: ExpressionPropertyInterface(prop.p),\r\n },\r\n roundness: {\r\n get: ExpressionPropertyInterface(prop.r),\r\n },\r\n size: {\r\n get: ExpressionPropertyInterface(prop.s),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function roundedInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.r.ix === value || value === 'Round Corners 1') {\r\n return interfaceFunction.radius;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\r\n\r\n Object.defineProperties(interfaceFunction, {\r\n radius: {\r\n get: ExpressionPropertyInterface(prop.rd),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\r\n function interfaceFunction(value) {\r\n if (shape.c.ix === value || value === 'Copies') {\r\n return interfaceFunction.copies;\r\n } if (shape.o.ix === value || value === 'Offset') {\r\n return interfaceFunction.offset;\r\n }\r\n return null;\r\n }\r\n\r\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\r\n var prop = view;\r\n interfaceFunction.propertyIndex = shape.ix;\r\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\r\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\r\n Object.defineProperties(interfaceFunction, {\r\n copies: {\r\n get: ExpressionPropertyInterface(prop.c),\r\n },\r\n offset: {\r\n get: ExpressionPropertyInterface(prop.o),\r\n },\r\n _name: { value: shape.nm },\r\n });\r\n interfaceFunction.mn = shape.mn;\r\n return interfaceFunction;\r\n }\r\n\r\n return function (shapes, view, propertyGroup) {\r\n var interfaces;\r\n function _interfaceFunction(value) {\r\n if (typeof value === 'number') {\r\n value = value === undefined ? 1 : value;\r\n if (value === 0) {\r\n return propertyGroup;\r\n }\r\n return interfaces[value - 1];\r\n }\r\n var i = 0;\r\n var len = interfaces.length;\r\n while (i < len) {\r\n if (interfaces[i]._name === value) {\r\n return interfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n function parentGroupWrapper() {\r\n return propertyGroup;\r\n }\r\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\r\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\r\n _interfaceFunction.numProperties = interfaces.length;\r\n _interfaceFunction._name = 'Contents';\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported TextExpressionInterface */\r\n\r\nvar TextExpressionInterface = (function () {\r\n return function (elem) {\r\n var _prevValue;\r\n var _sourceText;\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Text Document':\r\n return _thisLayerFunction.sourceText;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\r\n get: function () {\r\n elem.textProperty.getValue();\r\n var stringValue = elem.textProperty.currentData.t;\r\n if (stringValue !== _prevValue) {\r\n elem.textProperty.currentData.t = _prevValue;\r\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\r\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\r\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\r\n }\r\n return _sourceText;\r\n },\r\n });\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global Matrix, MaskManagerInterface, TransformExpressionInterface, getDescriptor */\r\n/* exported LayerExpressionInterface */\r\n\r\nvar LayerExpressionInterface = (function () {\r\n function getMatrix(time) {\r\n var toWorldMat = new Matrix();\r\n if (time !== undefined) {\r\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\r\n propMatrix.clone(toWorldMat);\r\n } else {\r\n var transformMat = this._elem.finalTransform.mProp;\r\n transformMat.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat;\r\n }\r\n\r\n function toWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function toWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.applyPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorldVec(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n toWorldMat.props[12] = 0;\r\n toWorldMat.props[13] = 0;\r\n toWorldMat.props[14] = 0;\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function fromWorld(arr, time) {\r\n var toWorldMat = this.getMatrix(time);\r\n return this.invertPoint(toWorldMat, arr);\r\n }\r\n\r\n function applyPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\r\n }\r\n\r\n function invertPoint(matrix, arr) {\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\r\n }\r\n }\r\n return matrix.inversePoint(arr);\r\n }\r\n\r\n function fromComp(arr) {\r\n var toWorldMat = new Matrix();\r\n toWorldMat.reset();\r\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\r\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\r\n var i;\r\n var len = this._elem.hierarchy.length;\r\n for (i = 0; i < len; i += 1) {\r\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n return toWorldMat.inversePoint(arr);\r\n }\r\n\r\n function sampleImage() {\r\n return [1, 1, 1, 1];\r\n }\r\n\r\n return function (elem) {\r\n var transformInterface;\r\n\r\n function _registerMaskInterface(maskManager) {\r\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\r\n }\r\n function _registerEffectsInterface(effects) {\r\n _thisLayerFunction.effect = effects;\r\n }\r\n\r\n function _thisLayerFunction(name) {\r\n switch (name) {\r\n case 'ADBE Root Vectors Group':\r\n case 'Contents':\r\n case 2:\r\n return _thisLayerFunction.shapeInterface;\r\n case 1:\r\n case 6:\r\n case 'Transform':\r\n case 'transform':\r\n case 'ADBE Transform Group':\r\n return transformInterface;\r\n case 4:\r\n case 'ADBE Effect Parade':\r\n case 'effects':\r\n case 'Effects':\r\n return _thisLayerFunction.effect;\r\n case 'ADBE Text Properties':\r\n return _thisLayerFunction.textInterface;\r\n default:\r\n return null;\r\n }\r\n }\r\n _thisLayerFunction.getMatrix = getMatrix;\r\n _thisLayerFunction.invertPoint = invertPoint;\r\n _thisLayerFunction.applyPoint = applyPoint;\r\n _thisLayerFunction.toWorld = toWorld;\r\n _thisLayerFunction.toWorldVec = toWorldVec;\r\n _thisLayerFunction.fromWorld = fromWorld;\r\n _thisLayerFunction.fromWorldVec = fromWorldVec;\r\n _thisLayerFunction.toComp = toWorld;\r\n _thisLayerFunction.fromComp = fromComp;\r\n _thisLayerFunction.sampleImage = sampleImage;\r\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\r\n _thisLayerFunction._elem = elem;\r\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\r\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\r\n Object.defineProperties(_thisLayerFunction, {\r\n hasParent: {\r\n get: function () {\r\n return elem.hierarchy.length;\r\n },\r\n },\r\n parent: {\r\n get: function () {\r\n return elem.hierarchy[0].layerInterface;\r\n },\r\n },\r\n rotation: getDescriptor(transformInterface, 'rotation'),\r\n scale: getDescriptor(transformInterface, 'scale'),\r\n position: getDescriptor(transformInterface, 'position'),\r\n opacity: getDescriptor(transformInterface, 'opacity'),\r\n anchorPoint: anchorPointDescriptor,\r\n anchor_point: anchorPointDescriptor,\r\n transform: {\r\n get: function () {\r\n return transformInterface;\r\n },\r\n },\r\n active: {\r\n get: function () {\r\n return elem.isInRange;\r\n },\r\n },\r\n });\r\n\r\n _thisLayerFunction.startTime = elem.data.st;\r\n _thisLayerFunction.index = elem.data.ind;\r\n _thisLayerFunction.source = elem.data.refId;\r\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\r\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\r\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\r\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\r\n _thisLayerFunction._name = elem.data.nm;\r\n\r\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\r\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global */\r\n/* exported FootageInterface */\r\n\r\nvar FootageInterface = (function () {\r\n var outlineInterfaceFactory = (function (elem) {\r\n var currentPropertyName = '';\r\n var currentProperty = elem.getFootageData();\r\n function init() {\r\n currentPropertyName = '';\r\n currentProperty = elem.getFootageData();\r\n return searchProperty;\r\n }\r\n function searchProperty(value) {\r\n if (currentProperty[value]) {\r\n currentPropertyName = value;\r\n currentProperty = currentProperty[value];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n var propertyNameIndex = value.indexOf(currentPropertyName);\r\n if (propertyNameIndex !== -1) {\r\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\r\n currentProperty = currentProperty[index];\r\n if (typeof currentProperty === 'object') {\r\n return searchProperty;\r\n }\r\n return currentProperty;\r\n }\r\n return '';\r\n }\r\n return init;\r\n });\r\n\r\n var dataInterfaceFactory = function (elem) {\r\n function interfaceFunction(value) {\r\n if (value === 'Outline') {\r\n return interfaceFunction.outlineInterface();\r\n }\r\n return null;\r\n }\r\n\r\n interfaceFunction._name = 'Outline';\r\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\r\n return interfaceFunction;\r\n };\r\n\r\n return function (elem) {\r\n function _interfaceFunction(value) {\r\n if (value === 'Data') {\r\n return _interfaceFunction.dataInterface;\r\n }\r\n return null;\r\n }\r\n\r\n _interfaceFunction._name = 'Data';\r\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\r\n return _interfaceFunction;\r\n };\r\n}());\r\n\r\n/* exported CompExpressionInterface */\r\n\r\nvar CompExpressionInterface = (function () {\r\n return function (comp) {\r\n function _thisLayerFunction(name) {\r\n var i = 0;\r\n var len = comp.layers.length;\r\n while (i < len) {\r\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\r\n return comp.elements[i].layerInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n // return {active:false};\r\n }\r\n Object.defineProperty(_thisLayerFunction, '_name', { value: comp.data.nm });\r\n _thisLayerFunction.layer = _thisLayerFunction;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\r\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\r\n _thisLayerFunction.pixelAspect = 1;\r\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\r\n _thisLayerFunction.displayStartTime = 0;\r\n _thisLayerFunction.numLayers = comp.layers.length;\r\n return _thisLayerFunction;\r\n };\r\n}());\r\n\r\n/* global ExpressionPropertyInterface */\r\n/* exported TransformExpressionInterface */\r\n\r\nvar TransformExpressionInterface = (function () {\r\n return function (transform) {\r\n function _thisFunction(name) {\r\n switch (name) {\r\n case 'scale':\r\n case 'Scale':\r\n case 'ADBE Scale':\r\n case 6:\r\n return _thisFunction.scale;\r\n case 'rotation':\r\n case 'Rotation':\r\n case 'ADBE Rotation':\r\n case 'ADBE Rotate Z':\r\n case 10:\r\n return _thisFunction.rotation;\r\n case 'ADBE Rotate X':\r\n return _thisFunction.xRotation;\r\n case 'ADBE Rotate Y':\r\n return _thisFunction.yRotation;\r\n case 'position':\r\n case 'Position':\r\n case 'ADBE Position':\r\n case 2:\r\n return _thisFunction.position;\r\n case 'ADBE Position_0':\r\n return _thisFunction.xPosition;\r\n case 'ADBE Position_1':\r\n return _thisFunction.yPosition;\r\n case 'ADBE Position_2':\r\n return _thisFunction.zPosition;\r\n case 'anchorPoint':\r\n case 'AnchorPoint':\r\n case 'Anchor Point':\r\n case 'ADBE AnchorPoint':\r\n case 1:\r\n return _thisFunction.anchorPoint;\r\n case 'opacity':\r\n case 'Opacity':\r\n case 11:\r\n return _thisFunction.opacity;\r\n default:\r\n return null;\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'rotation', {\r\n get: ExpressionPropertyInterface(transform.r || transform.rz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zRotation', {\r\n get: ExpressionPropertyInterface(transform.rz || transform.r),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xRotation', {\r\n get: ExpressionPropertyInterface(transform.rx),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yRotation', {\r\n get: ExpressionPropertyInterface(transform.ry),\r\n });\r\n Object.defineProperty(_thisFunction, 'scale', {\r\n get: ExpressionPropertyInterface(transform.s),\r\n });\r\n var _px;\r\n var _py;\r\n var _pz;\r\n var _transformFactory;\r\n if (transform.p) {\r\n _transformFactory = ExpressionPropertyInterface(transform.p);\r\n } else {\r\n _px = ExpressionPropertyInterface(transform.px);\r\n _py = ExpressionPropertyInterface(transform.py);\r\n if (transform.pz) {\r\n _pz = ExpressionPropertyInterface(transform.pz);\r\n }\r\n }\r\n Object.defineProperty(_thisFunction, 'position', {\r\n get: function () {\r\n if (transform.p) {\r\n return _transformFactory();\r\n }\r\n return [\r\n _px(),\r\n _py(),\r\n _pz ? _pz() : 0];\r\n },\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'xPosition', {\r\n get: ExpressionPropertyInterface(transform.px),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'yPosition', {\r\n get: ExpressionPropertyInterface(transform.py),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'zPosition', {\r\n get: ExpressionPropertyInterface(transform.pz),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'anchorPoint', {\r\n get: ExpressionPropertyInterface(transform.a),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'opacity', {\r\n get: ExpressionPropertyInterface(transform.o),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skew', {\r\n get: ExpressionPropertyInterface(transform.sk),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'skewAxis', {\r\n get: ExpressionPropertyInterface(transform.sa),\r\n });\r\n\r\n Object.defineProperty(_thisFunction, 'orientation', {\r\n get: ExpressionPropertyInterface(transform.or),\r\n });\r\n\r\n return _thisFunction;\r\n };\r\n}());\r\n\r\n/* exported ProjectInterface */\r\n\r\nvar ProjectInterface = (function () {\r\n function registerComposition(comp) {\r\n this.compositions.push(comp);\r\n }\r\n\r\n return function () {\r\n function _thisProjectFunction(name) {\r\n var i = 0;\r\n var len = this.compositions.length;\r\n while (i < len) {\r\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\r\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\r\n this.compositions[i].prepareFrame(this.currentFrame);\r\n }\r\n return this.compositions[i].compInterface;\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n }\r\n\r\n _thisProjectFunction.compositions = [];\r\n _thisProjectFunction.currentFrame = 0;\r\n\r\n _thisProjectFunction.registerComposition = registerComposition;\r\n\r\n return _thisProjectFunction;\r\n };\r\n}());\r\n\r\n/* global propertyGroupFactory, ExpressionPropertyInterface, PropertyInterface */\r\n/* exported EffectsExpressionInterface */\r\n\r\nvar EffectsExpressionInterface = (function () {\r\n var ob = {\r\n createEffectsInterface: createEffectsInterface,\r\n };\r\n\r\n function createEffectsInterface(elem, propertyGroup) {\r\n if (elem.effectsManager) {\r\n var effectElements = [];\r\n var effectsData = elem.data.ef;\r\n var i;\r\n var len = elem.effectsManager.effectElements.length;\r\n for (i = 0; i < len; i += 1) {\r\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\r\n }\r\n\r\n var effects = elem.data.ef || [];\r\n var groupInterface = function (name) {\r\n i = 0;\r\n len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n return effectElements[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n Object.defineProperty(groupInterface, 'numProperties', {\r\n get: function () {\r\n return effects.length;\r\n },\r\n });\r\n return groupInterface;\r\n }\r\n return null;\r\n }\r\n\r\n function createGroupInterface(data, elements, propertyGroup, elem) {\r\n function groupInterface(name) {\r\n var effects = data.ef;\r\n var i = 0;\r\n var len = effects.length;\r\n while (i < len) {\r\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\r\n if (effects[i].ty === 5) {\r\n return effectElements[i];\r\n }\r\n return effectElements[i]();\r\n }\r\n i += 1;\r\n }\r\n throw new Error();\r\n }\r\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\r\n\r\n var effectElements = [];\r\n var i;\r\n var len = data.ef.length;\r\n for (i = 0; i < len; i += 1) {\r\n if (data.ef[i].ty === 5) {\r\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\r\n } else {\r\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\r\n }\r\n }\r\n\r\n if (data.mn === 'ADBE Color Control') {\r\n Object.defineProperty(groupInterface, 'color', {\r\n get: function () {\r\n return effectElements[0]();\r\n },\r\n });\r\n }\r\n Object.defineProperties(groupInterface, {\r\n numProperties: {\r\n get: function () {\r\n return data.np;\r\n },\r\n },\r\n _name: { value: data.nm },\r\n propertyGroup: { value: _propertyGroup },\r\n });\r\n groupInterface.enabled = data.en !== 0;\r\n groupInterface.active = groupInterface.enabled;\r\n return groupInterface;\r\n }\r\n\r\n function createValueInterface(element, type, elem, propertyGroup) {\r\n var expressionProperty = ExpressionPropertyInterface(element.p);\r\n function interfaceFunction() {\r\n if (type === 10) {\r\n return elem.comp.compInterface(element.p.v);\r\n }\r\n return expressionProperty();\r\n }\r\n\r\n if (element.p.setGroupProperty) {\r\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\r\n }\r\n\r\n return interfaceFunction;\r\n }\r\n\r\n return ob;\r\n}());\r\n\r\n/* global createSizedArray */\r\n/* exported MaskManagerInterface */\r\n\r\nvar MaskManagerInterface = (function () {\r\n function MaskInterface(mask, data) {\r\n this._mask = mask;\r\n this._data = data;\r\n }\r\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\r\n get: function () {\r\n if (this._mask.prop.k) {\r\n this._mask.prop.getValue();\r\n }\r\n return this._mask.prop;\r\n },\r\n });\r\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\r\n get: function () {\r\n if (this._mask.op.k) {\r\n this._mask.op.getValue();\r\n }\r\n return this._mask.op.v * 100;\r\n },\r\n });\r\n\r\n var MaskManager = function (maskManager) {\r\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\r\n var i;\r\n var len = maskManager.viewData.length;\r\n for (i = 0; i < len; i += 1) {\r\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\r\n }\r\n\r\n var maskFunction = function (name) {\r\n i = 0;\r\n while (i < len) {\r\n if (maskManager.masksProperties[i].nm === name) {\r\n return _masksInterfaces[i];\r\n }\r\n i += 1;\r\n }\r\n return null;\r\n };\r\n return maskFunction;\r\n };\r\n return MaskManager;\r\n}());\r\n\r\n/* global createTypedArray */\r\n/* exported ExpressionPropertyInterface */\r\n\r\nvar ExpressionPropertyInterface = (function () {\r\n var defaultUnidimensionalValue = { pv: 0, v: 0, mult: 1 };\r\n var defaultMultidimensionalValue = { pv: [0, 0, 0], v: [0, 0, 0], mult: 1 };\r\n\r\n function completeProperty(expressionValue, property, type) {\r\n Object.defineProperty(expressionValue, 'velocity', {\r\n get: function () {\r\n return property.getVelocityAtTime(property.comp.currentFrame);\r\n },\r\n });\r\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\r\n expressionValue.key = function (pos) {\r\n if (!expressionValue.numKeys) {\r\n return 0;\r\n }\r\n var value = '';\r\n if ('s' in property.keyframes[pos - 1]) {\r\n value = property.keyframes[pos - 1].s;\r\n } else if ('e' in property.keyframes[pos - 2]) {\r\n value = property.keyframes[pos - 2].e;\r\n } else {\r\n value = property.keyframes[pos - 2].s;\r\n }\r\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\r\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\r\n valueProp.value = type === 'unidimensional' ? value[0] : value;\r\n return valueProp;\r\n };\r\n expressionValue.valueAtTime = property.getValueAtTime;\r\n expressionValue.speedAtTime = property.getSpeedAtTime;\r\n expressionValue.velocityAtTime = property.getVelocityAtTime;\r\n expressionValue.propertyGroup = property.propertyGroup;\r\n }\r\n\r\n function UnidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultUnidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var val = property.pv * mult;\r\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n val = property.v * mult;\r\n if (expressionValue.value !== val) {\r\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\r\n expressionValue.value = val;\r\n completeProperty(expressionValue, property, 'unidimensional');\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n function MultidimensionalPropertyInterface(property) {\r\n if (!property || !('pv' in property)) {\r\n property = defaultMultidimensionalValue;\r\n }\r\n var mult = 1 / property.mult;\r\n var len = (property.data && property.data.l) || property.pv.length;\r\n var expressionValue = createTypedArray('float32', len);\r\n var arrValue = createTypedArray('float32', len);\r\n expressionValue.value = arrValue;\r\n completeProperty(expressionValue, property, 'multidimensional');\r\n\r\n return function () {\r\n if (property.k) {\r\n property.getValue();\r\n }\r\n for (var i = 0; i < len; i += 1) {\r\n arrValue[i] = property.v[i] * mult;\r\n expressionValue[i] = arrValue[i];\r\n }\r\n return expressionValue;\r\n };\r\n }\r\n\r\n // TODO: try to avoid using this getter\r\n function defaultGetter() {\r\n return defaultUnidimensionalValue;\r\n }\r\n\r\n return function (property) {\r\n if (!property) {\r\n return defaultGetter;\r\n } if (property.propType === 'unidimensional') {\r\n return UnidimensionalPropertyInterface(property);\r\n }\r\n return MultidimensionalPropertyInterface(property);\r\n };\r\n}());\r\n\r\n/* global expressionHelpers, TextSelectorProp, ExpressionManager */\r\n/* exported TextExpressionSelectorProp */\r\n\r\n(function () {\r\n var TextExpressionSelectorProp = (function () { // eslint-disable-line no-unused-vars\r\n function getValueProxy(index, total) {\r\n this.textIndex = index + 1;\r\n this.textTotal = total;\r\n this.v = this.getValue() * this.mult;\r\n return this.v;\r\n }\r\n\r\n return function TextExpressionSelectorPropFactory(elem, data) {\r\n this.pv = 1;\r\n this.comp = elem.comp;\r\n this.elem = elem;\r\n this.mult = 0.01;\r\n this.propType = 'textSelector';\r\n this.textTotal = data.totalChars;\r\n this.selectorValue = 100;\r\n this.lastValue = [1, 1, 1];\r\n this.k = true;\r\n this.x = true;\r\n this.getValue = ExpressionManager.initiateExpression.bind(this)(elem, data, this);\r\n this.getMult = getValueProxy;\r\n this.getVelocityAtTime = expressionHelpers.getVelocityAtTime;\r\n if (this.kf) {\r\n this.getValueAtTime = expressionHelpers.getValueAtTime.bind(this);\r\n } else {\r\n this.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(this);\r\n }\r\n this.setGroupProperty = expressionHelpers.setGroupProperty;\r\n };\r\n }());\r\n\r\n var propertyGetTextProp = TextSelectorProp.getTextSelectorProp;\r\n TextSelectorProp.getTextSelectorProp = function (elem, data, arr) {\r\n if (data.t === 1) {\r\n return new TextExpressionSelectorPropFactory(elem, data, arr); // eslint-disable-line no-undef\r\n }\r\n return propertyGetTextProp(elem, data, arr);\r\n };\r\n}());\r\n\r\n/* global PropertyFactory */\r\n/* exported SliderEffect, AngleEffect, ColorEffect, PointEffect, LayerIndexEffect, MaskIndexEffect, CheckboxEffect, NoValueEffect */\r\n\r\nfunction SliderEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction AngleEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction ColorEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction PointEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\r\n}\r\nfunction LayerIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction MaskIndexEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction CheckboxEffect(data, elem, container) {\r\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\r\n}\r\nfunction NoValueEffect() {\r\n this.p = {};\r\n}\r\n\r\n/* global extendPrototype, SliderEffect, AngleEffect, ColorEffect, PointEffect, CheckboxEffect, LayerIndexEffect,\r\nMaskIndexEffect, NoValueEffect, DynamicPropertyContainer */\r\n\r\nfunction EffectsManager(data, element) {\r\n var effects = data.ef || [];\r\n this.effectElements = [];\r\n var i;\r\n var len = effects.length;\r\n var effectItem;\r\n for (i = 0; i < len; i += 1) {\r\n effectItem = new GroupEffect(effects[i], element);\r\n this.effectElements.push(effectItem);\r\n }\r\n}\r\n\r\nfunction GroupEffect(data, element) {\r\n this.init(data, element);\r\n}\r\n\r\nextendPrototype([DynamicPropertyContainer], GroupEffect);\r\n\r\nGroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\r\n\r\nGroupEffect.prototype.init = function (data, element) {\r\n this.data = data;\r\n this.effectElements = [];\r\n this.initDynamicPropertyContainer(element);\r\n var i;\r\n var len = this.data.ef.length;\r\n var eff;\r\n var effects = this.data.ef;\r\n for (i = 0; i < len; i += 1) {\r\n eff = null;\r\n switch (effects[i].ty) {\r\n case 0:\r\n eff = new SliderEffect(effects[i], element, this);\r\n break;\r\n case 1:\r\n eff = new AngleEffect(effects[i], element, this);\r\n break;\r\n case 2:\r\n eff = new ColorEffect(effects[i], element, this);\r\n break;\r\n case 3:\r\n eff = new PointEffect(effects[i], element, this);\r\n break;\r\n case 4:\r\n case 7:\r\n eff = new CheckboxEffect(effects[i], element, this);\r\n break;\r\n case 10:\r\n eff = new LayerIndexEffect(effects[i], element, this);\r\n break;\r\n case 11:\r\n eff = new MaskIndexEffect(effects[i], element, this);\r\n break;\r\n case 5:\r\n eff = new EffectsManager(effects[i], element, this);\r\n break;\r\n // case 6:\r\n default:\r\n eff = new NoValueEffect(effects[i], element, this);\r\n break;\r\n }\r\n if (eff) {\r\n this.effectElements.push(eff);\r\n }\r\n }\r\n};\r\n\r\n\r\nvar lottie = {};\r\n\r\nfunction setLocationHref(href) {\r\n locationHref = href;\r\n}\r\n\r\nfunction searchAnimations() {\r\n if (standalone === true) {\r\n animationManager.searchAnimations(animationData, standalone, renderer);\r\n } else {\r\n animationManager.searchAnimations();\r\n }\r\n}\r\n\r\nfunction setSubframeRendering(flag) {\r\n subframeEnabled = flag;\r\n}\r\n\r\nfunction loadAnimation(params) {\r\n if (standalone === true) {\r\n params.animationData = JSON.parse(animationData);\r\n }\r\n return animationManager.loadAnimation(params);\r\n}\r\n\r\nfunction setQuality(value) {\r\n if (typeof value === 'string') {\r\n switch (value) {\r\n case 'high':\r\n defaultCurveSegments = 200;\r\n break;\r\n default:\r\n case 'medium':\r\n defaultCurveSegments = 50;\r\n break;\r\n case 'low':\r\n defaultCurveSegments = 10;\r\n break;\r\n }\r\n } else if (!isNaN(value) && value > 1) {\r\n defaultCurveSegments = value;\r\n }\r\n if (defaultCurveSegments >= 50) {\r\n roundValues(false);\r\n } else {\r\n roundValues(true);\r\n }\r\n}\r\n\r\nfunction inBrowser() {\r\n return typeof navigator !== 'undefined';\r\n}\r\n\r\nfunction installPlugin(type, plugin) {\r\n if (type === 'expressions') {\r\n expressionsPlugin = plugin;\r\n }\r\n}\r\n\r\nfunction getFactory(name) {\r\n switch (name) {\r\n case 'propertyFactory':\r\n return PropertyFactory;\r\n case 'shapePropertyFactory':\r\n return ShapePropertyFactory;\r\n case 'matrix':\r\n return Matrix;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nlottie.play = animationManager.play;\r\nlottie.pause = animationManager.pause;\r\nlottie.setLocationHref = setLocationHref;\r\nlottie.togglePause = animationManager.togglePause;\r\nlottie.setSpeed = animationManager.setSpeed;\r\nlottie.setDirection = animationManager.setDirection;\r\nlottie.stop = animationManager.stop;\r\nlottie.searchAnimations = searchAnimations;\r\nlottie.registerAnimation = animationManager.registerAnimation;\r\nlottie.loadAnimation = loadAnimation;\r\nlottie.setSubframeRendering = setSubframeRendering;\r\nlottie.resize = animationManager.resize;\r\n// lottie.start = start;\r\nlottie.goToAndStop = animationManager.goToAndStop;\r\nlottie.destroy = animationManager.destroy;\r\nlottie.setQuality = setQuality;\r\nlottie.inBrowser = inBrowser;\r\nlottie.installPlugin = installPlugin;\r\nlottie.freeze = animationManager.freeze;\r\nlottie.unfreeze = animationManager.unfreeze;\r\nlottie.setVolume = animationManager.setVolume;\r\nlottie.mute = animationManager.mute;\r\nlottie.unmute = animationManager.unmute;\r\nlottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\r\nlottie.__getFactory = getFactory;\r\nlottie.version = '5.7.8';\r\n\r\nfunction checkReady() {\r\n if (document.readyState === 'complete') {\r\n clearInterval(readyStateCheckInterval);\r\n searchAnimations();\r\n }\r\n}\r\n\r\nfunction getQueryVariable(variable) {\r\n var vars = queryString.split('&');\r\n for (var i = 0; i < vars.length; i += 1) {\r\n var pair = vars[i].split('=');\r\n if (decodeURIComponent(pair[0]) == variable) { // eslint-disable-line eqeqeq\r\n return decodeURIComponent(pair[1]);\r\n }\r\n }\r\n return null;\r\n}\r\nvar standalone = '__[STANDALONE]__';\r\nvar animationData = '__[ANIMATIONDATA]__';\r\nvar renderer = '';\r\nvar queryString;\r\nif (standalone) {\r\n var scripts = document.getElementsByTagName('script');\r\n var index = scripts.length - 1;\r\n var myScript = scripts[index] || {\r\n src: '',\r\n };\r\n queryString = myScript.src.replace(/^[^\\?]+\\??/, ''); // eslint-disable-line no-useless-escape\r\n renderer = getQueryVariable('renderer');\r\n}\r\nvar readyStateCheckInterval = setInterval(checkReady, 100);\r\n\nreturn lottie;\n}));","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/* globals __webpack_amd_options__ */\nmodule.exports = __webpack_amd_options__;\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst Decoder = require('./decoder')\nconst utils = require('./utils')\n\n/**\n * Output the diagnostic format from a stream of CBOR bytes.\n *\n */\nclass Diagnose extends Decoder {\n createTag (tagNumber, value) {\n return `${tagNumber}(${value})`\n }\n\n createInt (val) {\n return super.createInt(val).toString()\n }\n\n createInt32 (f, g) {\n return super.createInt32(f, g).toString()\n }\n\n createInt64 (f1, f2, g1, g2) {\n return super.createInt64(f1, f2, g1, g2).toString()\n }\n\n createInt32Neg (f, g) {\n return super.createInt32Neg(f, g).toString()\n }\n\n createInt64Neg (f1, f2, g1, g2) {\n return super.createInt64Neg(f1, f2, g1, g2).toString()\n }\n\n createTrue () {\n return 'true'\n }\n\n createFalse () {\n return 'false'\n }\n\n createFloat (val) {\n const fl = super.createFloat(val)\n if (utils.isNegativeZero(val)) {\n return '-0_1'\n }\n\n return `${fl}_1`\n }\n\n createFloatSingle (a, b, c, d) {\n const fl = super.createFloatSingle(a, b, c, d)\n return `${fl}_2`\n }\n\n createFloatDouble (a, b, c, d, e, f, g, h) {\n const fl = super.createFloatDouble(a, b, c, d, e, f, g, h)\n return `${fl}_3`\n }\n\n createByteString (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n return `h'${val}`\n }\n\n createByteStringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createByteStringFromHeap(start, end)\n )).toString('hex')\n\n return `h'${val}'`\n }\n\n createInfinity () {\n return 'Infinity_1'\n }\n\n createInfinityNeg () {\n return '-Infinity_1'\n }\n\n createNaN () {\n return 'NaN_1'\n }\n\n createNaNNeg () {\n return '-NaN_1'\n }\n\n createNull () {\n return 'null'\n }\n\n createUndefined () {\n return 'undefined'\n }\n\n createSimpleUnassigned (val) {\n return `simple(${val})`\n }\n\n createArray (arr, len) {\n const val = super.createArray(arr, len)\n\n if (len === -1) {\n // indefinite\n return `[_ ${val.join(', ')}]`\n }\n\n return `[${val.join(', ')}]`\n }\n\n createMap (map, len) {\n const val = super.createMap(map)\n const list = Array.from(val.keys())\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${list}}`\n }\n\n return `{${list}}`\n }\n\n createObject (obj, len) {\n const val = super.createObject(obj)\n const map = Object.keys(val)\n .reduce(collectObject(val), '')\n\n if (len === -1) {\n return `{_ ${map}}`\n }\n\n return `{${map}}`\n }\n\n createUtf8String (raw, len) {\n const val = raw.join(', ')\n\n if (len === -1) {\n return `(_ ${val})`\n }\n\n return `\"${val}\"`\n }\n\n createUtf8StringFromHeap (start, end) {\n const val = (Buffer.from(\n super.createUtf8StringFromHeap(start, end)\n )).toString('utf8')\n\n return `\"${val}\"`\n }\n\n static diagnose (input, enc) {\n if (typeof input === 'string') {\n input = Buffer.from(input, enc || 'hex')\n }\n\n const dec = new Diagnose()\n return dec.decodeFirst(input)\n }\n}\n\nmodule.exports = Diagnose\n\nfunction collectObject (val) {\n return (acc, key) => {\n if (acc) {\n return `${acc}, ${key}: ${val[key]}`\n }\n return `${key}: ${val[key]}`\n }\n}\n","/* eslint-disable */\n\nmodule.exports = function decodeAsm (stdlib, foreign, buffer) {\n 'use asm'\n\n // -- Imports\n\n var heap = new stdlib.Uint8Array(buffer)\n // var log = foreign.log\n var pushInt = foreign.pushInt\n var pushInt32 = foreign.pushInt32\n var pushInt32Neg = foreign.pushInt32Neg\n var pushInt64 = foreign.pushInt64\n var pushInt64Neg = foreign.pushInt64Neg\n var pushFloat = foreign.pushFloat\n var pushFloatSingle = foreign.pushFloatSingle\n var pushFloatDouble = foreign.pushFloatDouble\n var pushTrue = foreign.pushTrue\n var pushFalse = foreign.pushFalse\n var pushUndefined = foreign.pushUndefined\n var pushNull = foreign.pushNull\n var pushInfinity = foreign.pushInfinity\n var pushInfinityNeg = foreign.pushInfinityNeg\n var pushNaN = foreign.pushNaN\n var pushNaNNeg = foreign.pushNaNNeg\n\n var pushArrayStart = foreign.pushArrayStart\n var pushArrayStartFixed = foreign.pushArrayStartFixed\n var pushArrayStartFixed32 = foreign.pushArrayStartFixed32\n var pushArrayStartFixed64 = foreign.pushArrayStartFixed64\n var pushObjectStart = foreign.pushObjectStart\n var pushObjectStartFixed = foreign.pushObjectStartFixed\n var pushObjectStartFixed32 = foreign.pushObjectStartFixed32\n var pushObjectStartFixed64 = foreign.pushObjectStartFixed64\n\n var pushByteString = foreign.pushByteString\n var pushByteStringStart = foreign.pushByteStringStart\n var pushUtf8String = foreign.pushUtf8String\n var pushUtf8StringStart = foreign.pushUtf8StringStart\n\n var pushSimpleUnassigned = foreign.pushSimpleUnassigned\n\n var pushTagStart = foreign.pushTagStart\n var pushTagStart4 = foreign.pushTagStart4\n var pushTagStart8 = foreign.pushTagStart8\n var pushTagUnassigned = foreign.pushTagUnassigned\n\n var pushBreak = foreign.pushBreak\n\n var pow = stdlib.Math.pow\n\n // -- Constants\n\n\n // -- Mutable Variables\n\n var offset = 0\n var inputLength = 0\n var code = 0\n\n // Decode a cbor string represented as Uint8Array\n // which is allocated on the heap from 0 to inputLength\n //\n // input - Int\n //\n // Returns Code - Int,\n // Success = 0\n // Error > 0\n function parse (input) {\n input = input | 0\n\n offset = 0\n inputLength = input\n\n while ((offset | 0) < (inputLength | 0)) {\n code = jumpTable[heap[offset] & 255](heap[offset] | 0) | 0\n\n if ((code | 0) > 0) {\n break\n }\n }\n\n return code | 0\n }\n\n // -- Helper Function\n\n function checkOffset (n) {\n n = n | 0\n\n if ((((offset | 0) + (n | 0)) | 0) < (inputLength | 0)) {\n return 0\n }\n\n return 1\n }\n\n function readUInt16 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 8) | heap[(n + 1) | 0]\n ) | 0\n }\n\n function readUInt32 (n) {\n n = n | 0\n\n return (\n (heap[n | 0] << 24) | (heap[(n + 1) | 0] << 16) | (heap[(n + 2) | 0] << 8) | heap[(n + 3) | 0]\n ) | 0\n }\n\n // -- Initial Byte Handlers\n\n function INT_P (octet) {\n octet = octet | 0\n\n pushInt(octet | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_P_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_P_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushInt(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_P_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_P_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function INT_N (octet) {\n octet = octet | 0\n\n pushInt((-1 - ((octet - 32) | 0)) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UINT_N_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushInt(\n (-1 - (heap[(offset + 1) | 0] | 0)) | 0\n )\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function UINT_N_16 (octet) {\n octet = octet | 0\n\n var val = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n val = readUInt16((offset + 1) | 0) | 0\n pushInt((-1 - (val | 0)) | 0)\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function UINT_N_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushInt32Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function UINT_N_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushInt64Neg(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function BYTE_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 64) | 0\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushByteString(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function BYTE_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function BYTE_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushByteStringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function UTF8_STRING (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var step = 0\n\n step = (octet - 96) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n start = (offset + 1) | 0\n end = (((offset + 1) | 0) + (step | 0)) | 0\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_8 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n length = heap[(offset + 1) | 0] | 0\n start = (offset + 2) | 0\n end = (((offset + 2) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 1) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_16 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n length = readUInt16((offset + 1) | 0) | 0\n start = (offset + 3) | 0\n end = (((offset + 3) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 2) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_32 (octet) {\n octet = octet | 0\n\n var start = 0\n var end = 0\n var length = 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n length = readUInt32((offset + 1) | 0) | 0\n start = (offset + 5) | 0\n end = (((offset + 5) | 0) + (length | 0)) | 0\n\n if (checkOffset((length + 4) | 0) | 0) {\n return 1\n }\n\n pushUtf8String(start | 0, end | 0)\n\n offset = end | 0\n\n return 0\n }\n\n function UTF8_STRING_64 (octet) {\n // NOT IMPLEMENTED\n octet = octet | 0\n\n return 1\n }\n\n function UTF8_STRING_BREAK (octet) {\n octet = octet | 0\n\n pushUtf8StringStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY (octet) {\n octet = octet | 0\n\n pushArrayStartFixed((octet - 128) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function ARRAY_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushArrayStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function ARRAY_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushArrayStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function ARRAY_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushArrayStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function ARRAY_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushArrayStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ARRAY_BREAK (octet) {\n octet = octet | 0\n\n pushArrayStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP (octet) {\n octet = octet | 0\n\n var step = 0\n\n step = (octet - 160) | 0\n\n if (checkOffset(step | 0) | 0) {\n return 1\n }\n\n pushObjectStartFixed(step | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function MAP_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushObjectStartFixed(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function MAP_16 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushObjectStartFixed(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function MAP_32 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushObjectStartFixed32(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function MAP_64 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushObjectStartFixed64(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function MAP_BREAK (octet) {\n octet = octet | 0\n\n pushObjectStart()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function TAG_KNOWN (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_POS (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_NEG (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_FRAC (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BIGNUM_FLOAT (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushTagStart((octet - 192| 0) | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64_URL (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE64 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_BASE16 (octet) {\n octet = octet | 0\n\n pushTagStart(octet | 0)\n\n offset = (offset + 1 | 0)\n\n return 0\n }\n\n function TAG_MORE_1 (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushTagStart(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2 | 0)\n\n return 0\n }\n\n function TAG_MORE_2 (octet) {\n octet = octet | 0\n\n if (checkOffset(2) | 0) {\n return 1\n }\n\n pushTagStart(\n readUInt16((offset + 1) | 0) | 0\n )\n\n offset = (offset + 3 | 0)\n\n return 0\n }\n\n function TAG_MORE_4 (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushTagStart4(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0\n )\n\n offset = (offset + 5 | 0)\n\n return 0\n }\n\n function TAG_MORE_8 (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushTagStart8(\n readUInt16((offset + 1) | 0) | 0,\n readUInt16((offset + 3) | 0) | 0,\n readUInt16((offset + 5) | 0) | 0,\n readUInt16((offset + 7) | 0) | 0\n )\n\n offset = (offset + 9 | 0)\n\n return 0\n }\n\n function SIMPLE_UNASSIGNED (octet) {\n octet = octet | 0\n\n pushSimpleUnassigned(((octet | 0) - 224) | 0)\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_FALSE (octet) {\n octet = octet | 0\n\n pushFalse()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_TRUE (octet) {\n octet = octet | 0\n\n pushTrue()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_NULL (octet) {\n octet = octet | 0\n\n pushNull()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_UNDEFINED (octet) {\n octet = octet | 0\n\n pushUndefined()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n function SIMPLE_BYTE (octet) {\n octet = octet | 0\n\n if (checkOffset(1) | 0) {\n return 1\n }\n\n pushSimpleUnassigned(heap[(offset + 1) | 0] | 0)\n\n offset = (offset + 2) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_HALF (octet) {\n octet = octet | 0\n\n var f = 0\n var g = 0\n var sign = 1.0\n var exp = 0.0\n var mant = 0.0\n var r = 0.0\n if (checkOffset(2) | 0) {\n return 1\n }\n\n f = heap[(offset + 1) | 0] | 0\n g = heap[(offset + 2) | 0] | 0\n\n if ((f | 0) & 0x80) {\n sign = -1.0\n }\n\n exp = +(((f | 0) & 0x7C) >> 2)\n mant = +((((f | 0) & 0x03) << 8) | g)\n\n if (+exp == 0.0) {\n pushFloat(+(\n (+sign) * +5.9604644775390625e-8 * (+mant)\n ))\n } else if (+exp == 31.0) {\n if (+sign == 1.0) {\n if (+mant > 0.0) {\n pushNaN()\n } else {\n pushInfinity()\n }\n } else {\n if (+mant > 0.0) {\n pushNaNNeg()\n } else {\n pushInfinityNeg()\n }\n }\n } else {\n pushFloat(+(\n +sign * pow(+2, +(+exp - 25.0)) * +(1024.0 + mant)\n ))\n }\n\n offset = (offset + 3) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_SINGLE (octet) {\n octet = octet | 0\n\n if (checkOffset(4) | 0) {\n return 1\n }\n\n pushFloatSingle(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0\n )\n\n offset = (offset + 5) | 0\n\n return 0\n }\n\n function SIMPLE_FLOAT_DOUBLE (octet) {\n octet = octet | 0\n\n if (checkOffset(8) | 0) {\n return 1\n }\n\n pushFloatDouble(\n heap[(offset + 1) | 0] | 0,\n heap[(offset + 2) | 0] | 0,\n heap[(offset + 3) | 0] | 0,\n heap[(offset + 4) | 0] | 0,\n heap[(offset + 5) | 0] | 0,\n heap[(offset + 6) | 0] | 0,\n heap[(offset + 7) | 0] | 0,\n heap[(offset + 8) | 0] | 0\n )\n\n offset = (offset + 9) | 0\n\n return 0\n }\n\n function ERROR (octet) {\n octet = octet | 0\n\n return 1\n }\n\n function BREAK (octet) {\n octet = octet | 0\n\n pushBreak()\n\n offset = (offset + 1) | 0\n\n return 0\n }\n\n // -- Jump Table\n\n var jumpTable = [\n // Integer 0x00..0x17 (0..23)\n INT_P, // 0x00\n INT_P, // 0x01\n INT_P, // 0x02\n INT_P, // 0x03\n INT_P, // 0x04\n INT_P, // 0x05\n INT_P, // 0x06\n INT_P, // 0x07\n INT_P, // 0x08\n INT_P, // 0x09\n INT_P, // 0x0A\n INT_P, // 0x0B\n INT_P, // 0x0C\n INT_P, // 0x0D\n INT_P, // 0x0E\n INT_P, // 0x0F\n INT_P, // 0x10\n INT_P, // 0x11\n INT_P, // 0x12\n INT_P, // 0x13\n INT_P, // 0x14\n INT_P, // 0x15\n INT_P, // 0x16\n INT_P, // 0x17\n // Unsigned integer (one-byte uint8_t follows)\n UINT_P_8, // 0x18\n // Unsigned integer (two-byte uint16_t follows)\n UINT_P_16, // 0x19\n // Unsigned integer (four-byte uint32_t follows)\n UINT_P_32, // 0x1a\n // Unsigned integer (eight-byte uint64_t follows)\n UINT_P_64, // 0x1b\n ERROR, // 0x1c\n ERROR, // 0x1d\n ERROR, // 0x1e\n ERROR, // 0x1f\n // Negative integer -1-0x00..-1-0x17 (-1..-24)\n INT_N, // 0x20\n INT_N, // 0x21\n INT_N, // 0x22\n INT_N, // 0x23\n INT_N, // 0x24\n INT_N, // 0x25\n INT_N, // 0x26\n INT_N, // 0x27\n INT_N, // 0x28\n INT_N, // 0x29\n INT_N, // 0x2A\n INT_N, // 0x2B\n INT_N, // 0x2C\n INT_N, // 0x2D\n INT_N, // 0x2E\n INT_N, // 0x2F\n INT_N, // 0x30\n INT_N, // 0x31\n INT_N, // 0x32\n INT_N, // 0x33\n INT_N, // 0x34\n INT_N, // 0x35\n INT_N, // 0x36\n INT_N, // 0x37\n // Negative integer -1-n (one-byte uint8_t for n follows)\n UINT_N_8, // 0x38\n // Negative integer -1-n (two-byte uint16_t for n follows)\n UINT_N_16, // 0x39\n // Negative integer -1-n (four-byte uint32_t for nfollows)\n UINT_N_32, // 0x3a\n // Negative integer -1-n (eight-byte uint64_t for n follows)\n UINT_N_64, // 0x3b\n ERROR, // 0x3c\n ERROR, // 0x3d\n ERROR, // 0x3e\n ERROR, // 0x3f\n // byte string (0x00..0x17 bytes follow)\n BYTE_STRING, // 0x40\n BYTE_STRING, // 0x41\n BYTE_STRING, // 0x42\n BYTE_STRING, // 0x43\n BYTE_STRING, // 0x44\n BYTE_STRING, // 0x45\n BYTE_STRING, // 0x46\n BYTE_STRING, // 0x47\n BYTE_STRING, // 0x48\n BYTE_STRING, // 0x49\n BYTE_STRING, // 0x4A\n BYTE_STRING, // 0x4B\n BYTE_STRING, // 0x4C\n BYTE_STRING, // 0x4D\n BYTE_STRING, // 0x4E\n BYTE_STRING, // 0x4F\n BYTE_STRING, // 0x50\n BYTE_STRING, // 0x51\n BYTE_STRING, // 0x52\n BYTE_STRING, // 0x53\n BYTE_STRING, // 0x54\n BYTE_STRING, // 0x55\n BYTE_STRING, // 0x56\n BYTE_STRING, // 0x57\n // byte string (one-byte uint8_t for n, and then n bytes follow)\n BYTE_STRING_8, // 0x58\n // byte string (two-byte uint16_t for n, and then n bytes follow)\n BYTE_STRING_16, // 0x59\n // byte string (four-byte uint32_t for n, and then n bytes follow)\n BYTE_STRING_32, // 0x5a\n // byte string (eight-byte uint64_t for n, and then n bytes follow)\n BYTE_STRING_64, // 0x5b\n ERROR, // 0x5c\n ERROR, // 0x5d\n ERROR, // 0x5e\n // byte string, byte strings follow, terminated by \"break\"\n BYTE_STRING_BREAK, // 0x5f\n // UTF-8 string (0x00..0x17 bytes follow)\n UTF8_STRING, // 0x60\n UTF8_STRING, // 0x61\n UTF8_STRING, // 0x62\n UTF8_STRING, // 0x63\n UTF8_STRING, // 0x64\n UTF8_STRING, // 0x65\n UTF8_STRING, // 0x66\n UTF8_STRING, // 0x67\n UTF8_STRING, // 0x68\n UTF8_STRING, // 0x69\n UTF8_STRING, // 0x6A\n UTF8_STRING, // 0x6B\n UTF8_STRING, // 0x6C\n UTF8_STRING, // 0x6D\n UTF8_STRING, // 0x6E\n UTF8_STRING, // 0x6F\n UTF8_STRING, // 0x70\n UTF8_STRING, // 0x71\n UTF8_STRING, // 0x72\n UTF8_STRING, // 0x73\n UTF8_STRING, // 0x74\n UTF8_STRING, // 0x75\n UTF8_STRING, // 0x76\n UTF8_STRING, // 0x77\n // UTF-8 string (one-byte uint8_t for n, and then n bytes follow)\n UTF8_STRING_8, // 0x78\n // UTF-8 string (two-byte uint16_t for n, and then n bytes follow)\n UTF8_STRING_16, // 0x79\n // UTF-8 string (four-byte uint32_t for n, and then n bytes follow)\n UTF8_STRING_32, // 0x7a\n // UTF-8 string (eight-byte uint64_t for n, and then n bytes follow)\n UTF8_STRING_64, // 0x7b\n // UTF-8 string, UTF-8 strings follow, terminated by \"break\"\n ERROR, // 0x7c\n ERROR, // 0x7d\n ERROR, // 0x7e\n UTF8_STRING_BREAK, // 0x7f\n // array (0x00..0x17 data items follow)\n ARRAY, // 0x80\n ARRAY, // 0x81\n ARRAY, // 0x82\n ARRAY, // 0x83\n ARRAY, // 0x84\n ARRAY, // 0x85\n ARRAY, // 0x86\n ARRAY, // 0x87\n ARRAY, // 0x88\n ARRAY, // 0x89\n ARRAY, // 0x8A\n ARRAY, // 0x8B\n ARRAY, // 0x8C\n ARRAY, // 0x8D\n ARRAY, // 0x8E\n ARRAY, // 0x8F\n ARRAY, // 0x90\n ARRAY, // 0x91\n ARRAY, // 0x92\n ARRAY, // 0x93\n ARRAY, // 0x94\n ARRAY, // 0x95\n ARRAY, // 0x96\n ARRAY, // 0x97\n // array (one-byte uint8_t fo, and then n data items follow)\n ARRAY_8, // 0x98\n // array (two-byte uint16_t for n, and then n data items follow)\n ARRAY_16, // 0x99\n // array (four-byte uint32_t for n, and then n data items follow)\n ARRAY_32, // 0x9a\n // array (eight-byte uint64_t for n, and then n data items follow)\n ARRAY_64, // 0x9b\n // array, data items follow, terminated by \"break\"\n ERROR, // 0x9c\n ERROR, // 0x9d\n ERROR, // 0x9e\n ARRAY_BREAK, // 0x9f\n // map (0x00..0x17 pairs of data items follow)\n MAP, // 0xa0\n MAP, // 0xa1\n MAP, // 0xa2\n MAP, // 0xa3\n MAP, // 0xa4\n MAP, // 0xa5\n MAP, // 0xa6\n MAP, // 0xa7\n MAP, // 0xa8\n MAP, // 0xa9\n MAP, // 0xaA\n MAP, // 0xaB\n MAP, // 0xaC\n MAP, // 0xaD\n MAP, // 0xaE\n MAP, // 0xaF\n MAP, // 0xb0\n MAP, // 0xb1\n MAP, // 0xb2\n MAP, // 0xb3\n MAP, // 0xb4\n MAP, // 0xb5\n MAP, // 0xb6\n MAP, // 0xb7\n // map (one-byte uint8_t for n, and then n pairs of data items follow)\n MAP_8, // 0xb8\n // map (two-byte uint16_t for n, and then n pairs of data items follow)\n MAP_16, // 0xb9\n // map (four-byte uint32_t for n, and then n pairs of data items follow)\n MAP_32, // 0xba\n // map (eight-byte uint64_t for n, and then n pairs of data items follow)\n MAP_64, // 0xbb\n ERROR, // 0xbc\n ERROR, // 0xbd\n ERROR, // 0xbe\n // map, pairs of data items follow, terminated by \"break\"\n MAP_BREAK, // 0xbf\n // Text-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc0\n // Epoch-based date/time (data item follows; see Section 2.4.1)\n TAG_KNOWN, // 0xc1\n // Positive bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc2\n // Negative bignum (data item \"byte string\" follows)\n TAG_KNOWN, // 0xc3\n // Decimal Fraction (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc4\n // Bigfloat (data item \"array\" follows; see Section 2.4.3)\n TAG_KNOWN, // 0xc5\n // (tagged item)\n TAG_UNASSIGNED, // 0xc6\n TAG_UNASSIGNED, // 0xc7\n TAG_UNASSIGNED, // 0xc8\n TAG_UNASSIGNED, // 0xc9\n TAG_UNASSIGNED, // 0xca\n TAG_UNASSIGNED, // 0xcb\n TAG_UNASSIGNED, // 0xcc\n TAG_UNASSIGNED, // 0xcd\n TAG_UNASSIGNED, // 0xce\n TAG_UNASSIGNED, // 0xcf\n TAG_UNASSIGNED, // 0xd0\n TAG_UNASSIGNED, // 0xd1\n TAG_UNASSIGNED, // 0xd2\n TAG_UNASSIGNED, // 0xd3\n TAG_UNASSIGNED, // 0xd4\n // Expected Conversion (data item follows; see Section 2.4.4.2)\n TAG_UNASSIGNED, // 0xd5\n TAG_UNASSIGNED, // 0xd6\n TAG_UNASSIGNED, // 0xd7\n // (more tagged items, 1/2/4/8 bytes and then a data item follow)\n TAG_MORE_1, // 0xd8\n TAG_MORE_2, // 0xd9\n TAG_MORE_4, // 0xda\n TAG_MORE_8, // 0xdb\n ERROR, // 0xdc\n ERROR, // 0xdd\n ERROR, // 0xde\n ERROR, // 0xdf\n // (simple value)\n SIMPLE_UNASSIGNED, // 0xe0\n SIMPLE_UNASSIGNED, // 0xe1\n SIMPLE_UNASSIGNED, // 0xe2\n SIMPLE_UNASSIGNED, // 0xe3\n SIMPLE_UNASSIGNED, // 0xe4\n SIMPLE_UNASSIGNED, // 0xe5\n SIMPLE_UNASSIGNED, // 0xe6\n SIMPLE_UNASSIGNED, // 0xe7\n SIMPLE_UNASSIGNED, // 0xe8\n SIMPLE_UNASSIGNED, // 0xe9\n SIMPLE_UNASSIGNED, // 0xea\n SIMPLE_UNASSIGNED, // 0xeb\n SIMPLE_UNASSIGNED, // 0xec\n SIMPLE_UNASSIGNED, // 0xed\n SIMPLE_UNASSIGNED, // 0xee\n SIMPLE_UNASSIGNED, // 0xef\n SIMPLE_UNASSIGNED, // 0xf0\n SIMPLE_UNASSIGNED, // 0xf1\n SIMPLE_UNASSIGNED, // 0xf2\n SIMPLE_UNASSIGNED, // 0xf3\n // False\n SIMPLE_FALSE, // 0xf4\n // True\n SIMPLE_TRUE, // 0xf5\n // Null\n SIMPLE_NULL, // 0xf6\n // Undefined\n SIMPLE_UNDEFINED, // 0xf7\n // (simple value, one byte follows)\n SIMPLE_BYTE, // 0xf8\n // Half-Precision Float (two-byte IEEE 754)\n SIMPLE_FLOAT_HALF, // 0xf9\n // Single-Precision Float (four-byte IEEE 754)\n SIMPLE_FLOAT_SINGLE, // 0xfa\n // Double-Precision Float (eight-byte IEEE 754)\n SIMPLE_FLOAT_DOUBLE, // 0xfb\n ERROR, // 0xfc\n ERROR, // 0xfd\n ERROR, // 0xfe\n // \"break\" stop code\n BREAK // 0xff\n ]\n\n // --\n\n return {\n parse: parse\n }\n}\n","'use strict';\n\nconst { URLWithLegacySupport, format } = require('./url');\n\nmodule.exports = (url, location = {}, protocolMap = {}, defaultProtocol) => {\n let protocol = location.protocol ?\n location.protocol.replace(':', '') :\n 'http';\n\n // Check protocol map\n protocol = (protocolMap[protocol] || defaultProtocol || protocol) + ':';\n let urlParsed;\n\n try {\n urlParsed = new URLWithLegacySupport(url);\n } catch (err) {\n urlParsed = {};\n }\n\n const base = Object.assign({}, location, {\n protocol: protocol || urlParsed.protocol,\n host: location.host || urlParsed.host\n });\n\n return new URLWithLegacySupport(url, format(base)).toString();\n};\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst { URL } = require('iso-url')\nconst Bignumber = require('bignumber.js').BigNumber\n\nconst utils = require('./utils')\nconst constants = require('./constants')\nconst MT = constants.MT\nconst NUMBYTES = constants.NUMBYTES\nconst SHIFT32 = constants.SHIFT32\nconst SYMS = constants.SYMS\nconst TAG = constants.TAG\nconst HALF = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.TWO\nconst FLOAT = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.FOUR\nconst DOUBLE = (constants.MT.SIMPLE_FLOAT << 5) | constants.NUMBYTES.EIGHT\nconst TRUE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.TRUE\nconst FALSE = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.FALSE\nconst UNDEFINED = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.UNDEFINED\nconst NULL = (constants.MT.SIMPLE_FLOAT << 5) | constants.SIMPLE.NULL\n\nconst MAXINT_BN = new Bignumber('0x20000000000000')\nconst BUF_NAN = Buffer.from('f97e00', 'hex')\nconst BUF_INF_NEG = Buffer.from('f9fc00', 'hex')\nconst BUF_INF_POS = Buffer.from('f97c00', 'hex')\n\nfunction toType (obj) {\n // [object Type]\n // --------8---1\n return ({}).toString.call(obj).slice(8, -1)\n}\n\n/**\n * Transform JavaScript values into CBOR bytes\n *\n */\nclass Encoder {\n /**\n * @param {Object} [options={}]\n * @param {function(Buffer)} options.stream\n */\n constructor (options) {\n options = options || {}\n\n this.streaming = typeof options.stream === 'function'\n this.onData = options.stream\n\n this.semanticTypes = [\n [URL, this._pushUrl],\n [Bignumber, this._pushBigNumber]\n ]\n\n const addTypes = options.genTypes || []\n const len = addTypes.length\n for (let i = 0; i < len; i++) {\n this.addSemanticType(\n addTypes[i][0],\n addTypes[i][1]\n )\n }\n\n this._reset()\n }\n\n addSemanticType (type, fun) {\n const len = this.semanticTypes.length\n for (let i = 0; i < len; i++) {\n const typ = this.semanticTypes[i][0]\n if (typ === type) {\n const old = this.semanticTypes[i][1]\n this.semanticTypes[i][1] = fun\n return old\n }\n }\n this.semanticTypes.push([type, fun])\n return null\n }\n\n push (val) {\n if (!val) {\n return true\n }\n\n this.result[this.offset] = val\n this.resultMethod[this.offset] = 0\n this.resultLength[this.offset] = val.length\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n pushWrite (val, method, len) {\n this.result[this.offset] = val\n this.resultMethod[this.offset] = method\n this.resultLength[this.offset] = len\n this.offset++\n\n if (this.streaming) {\n this.onData(this.finalize())\n }\n\n return true\n }\n\n _pushUInt8 (val) {\n return this.pushWrite(val, 1, 1)\n }\n\n _pushUInt16BE (val) {\n return this.pushWrite(val, 2, 2)\n }\n\n _pushUInt32BE (val) {\n return this.pushWrite(val, 3, 4)\n }\n\n _pushDoubleBE (val) {\n return this.pushWrite(val, 4, 8)\n }\n\n _pushNaN () {\n return this.push(BUF_NAN)\n }\n\n _pushInfinity (obj) {\n const half = (obj < 0) ? BUF_INF_NEG : BUF_INF_POS\n return this.push(half)\n }\n\n _pushFloat (obj) {\n const b2 = Buffer.allocUnsafe(2)\n\n if (utils.writeHalf(b2, obj)) {\n if (utils.parseHalf(b2) === obj) {\n return this._pushUInt8(HALF) && this.push(b2)\n }\n }\n\n const b4 = Buffer.allocUnsafe(4)\n b4.writeFloatBE(obj, 0)\n if (b4.readFloatBE(0) === obj) {\n return this._pushUInt8(FLOAT) && this.push(b4)\n }\n\n return this._pushUInt8(DOUBLE) && this._pushDoubleBE(obj)\n }\n\n _pushInt (obj, mt, orig) {\n const m = mt << 5\n if (obj < 24) {\n return this._pushUInt8(m | obj)\n }\n\n if (obj <= 0xff) {\n return this._pushUInt8(m | NUMBYTES.ONE) && this._pushUInt8(obj)\n }\n\n if (obj <= 0xffff) {\n return this._pushUInt8(m | NUMBYTES.TWO) && this._pushUInt16BE(obj)\n }\n\n if (obj <= 0xffffffff) {\n return this._pushUInt8(m | NUMBYTES.FOUR) && this._pushUInt32BE(obj)\n }\n\n if (obj <= Number.MAX_SAFE_INTEGER) {\n return this._pushUInt8(m | NUMBYTES.EIGHT) &&\n this._pushUInt32BE(Math.floor(obj / SHIFT32)) &&\n this._pushUInt32BE(obj % SHIFT32)\n }\n\n if (mt === MT.NEG_INT) {\n return this._pushFloat(orig)\n }\n\n return this._pushFloat(obj)\n }\n\n _pushIntNum (obj) {\n if (obj < 0) {\n return this._pushInt(-obj - 1, MT.NEG_INT, obj)\n } else {\n return this._pushInt(obj, MT.POS_INT)\n }\n }\n\n _pushNumber (obj) {\n switch (false) {\n case (obj === obj): // eslint-disable-line\n return this._pushNaN(obj)\n case isFinite(obj):\n return this._pushInfinity(obj)\n case ((obj % 1) !== 0):\n return this._pushIntNum(obj)\n default:\n return this._pushFloat(obj)\n }\n }\n\n _pushString (obj) {\n const len = Buffer.byteLength(obj, 'utf8')\n return this._pushInt(len, MT.UTF8_STRING) && this.pushWrite(obj, 5, len)\n }\n\n _pushBoolean (obj) {\n return this._pushUInt8(obj ? TRUE : FALSE)\n }\n\n _pushUndefined (obj) {\n return this._pushUInt8(UNDEFINED)\n }\n\n _pushArray (gen, obj) {\n const len = obj.length\n if (!gen._pushInt(len, MT.ARRAY)) {\n return false\n }\n for (let j = 0; j < len; j++) {\n if (!gen.pushAny(obj[j])) {\n return false\n }\n }\n return true\n }\n\n _pushTag (tag) {\n return this._pushInt(tag, MT.TAG)\n }\n\n _pushDate (gen, obj) {\n // Round date, to get seconds since 1970-01-01 00:00:00 as defined in\n // Sec. 2.4.1 and get a possibly more compact encoding. Note that it is\n // still allowed to encode fractions of seconds which can be achieved by\n // changing overwriting the encode function for Date objects.\n return gen._pushTag(TAG.DATE_EPOCH) && gen.pushAny(Math.round(obj / 1000))\n }\n\n _pushBuffer (gen, obj) {\n return gen._pushInt(obj.length, MT.BYTE_STRING) && gen.push(obj)\n }\n\n _pushNoFilter (gen, obj) {\n return gen._pushBuffer(gen, obj.slice())\n }\n\n _pushRegexp (gen, obj) {\n return gen._pushTag(TAG.REGEXP) && gen.pushAny(obj.source)\n }\n\n _pushSet (gen, obj) {\n if (!gen._pushInt(obj.size, MT.ARRAY)) {\n return false\n }\n for (const x of obj) {\n if (!gen.pushAny(x)) {\n return false\n }\n }\n return true\n }\n\n _pushUrl (gen, obj) {\n return gen._pushTag(TAG.URI) && gen.pushAny(obj.format())\n }\n\n _pushBigint (obj) {\n let tag = TAG.POS_BIGINT\n if (obj.isNegative()) {\n obj = obj.negated().minus(1)\n tag = TAG.NEG_BIGINT\n }\n let str = obj.toString(16)\n if (str.length % 2) {\n str = '0' + str\n }\n const buf = Buffer.from(str, 'hex')\n return this._pushTag(tag) && this._pushBuffer(this, buf)\n }\n\n _pushBigNumber (gen, obj) {\n if (obj.isNaN()) {\n return gen._pushNaN()\n }\n if (!obj.isFinite()) {\n return gen._pushInfinity(obj.isNegative() ? -Infinity : Infinity)\n }\n if (obj.isInteger()) {\n return gen._pushBigint(obj)\n }\n if (!(gen._pushTag(TAG.DECIMAL_FRAC) &&\n gen._pushInt(2, MT.ARRAY))) {\n return false\n }\n\n const dec = obj.decimalPlaces()\n const slide = obj.multipliedBy(new Bignumber(10).pow(dec))\n if (!gen._pushIntNum(-dec)) {\n return false\n }\n if (slide.abs().isLessThan(MAXINT_BN)) {\n return gen._pushIntNum(slide.toNumber())\n } else {\n return gen._pushBigint(slide)\n }\n }\n\n _pushMap (gen, obj) {\n if (!gen._pushInt(obj.size, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n obj.size,\n Array.from(obj)\n )\n }\n\n _pushObject (obj) {\n if (!obj) {\n return this._pushUInt8(NULL)\n }\n\n var len = this.semanticTypes.length\n for (var i = 0; i < len; i++) {\n if (obj instanceof this.semanticTypes[i][0]) {\n return this.semanticTypes[i][1].call(obj, this, obj)\n }\n }\n\n var f = obj.encodeCBOR\n if (typeof f === 'function') {\n return f.call(obj, this)\n }\n\n var keys = Object.keys(obj)\n var keyLength = keys.length\n if (!this._pushInt(keyLength, MT.MAP)) {\n return false\n }\n\n return this._pushRawMap(\n keyLength,\n keys.map((k) => [k, obj[k]])\n )\n }\n\n _pushRawMap (len, map) {\n // Sort keys for canoncialization\n // 1. encode key\n // 2. shorter key comes before longer key\n // 3. same length keys are sorted with lower\n // byte value before higher\n\n map = map.map(function (a) {\n a[0] = Encoder.encode(a[0])\n return a\n }).sort(utils.keySorter)\n\n for (var j = 0; j < len; j++) {\n if (!this.push(map[j][0])) {\n return false\n }\n\n if (!this.pushAny(map[j][1])) {\n return false\n }\n }\n\n return true\n }\n\n /**\n * Alias for `.pushAny`\n *\n * @param {*} obj\n * @returns {boolean} true on success\n */\n write (obj) {\n return this.pushAny(obj)\n }\n\n /**\n * Push any supported type onto the encoded stream\n *\n * @param {any} obj\n * @returns {boolean} true on success\n */\n pushAny (obj) {\n var typ = toType(obj)\n\n switch (typ) {\n case 'Number':\n return this._pushNumber(obj)\n case 'String':\n return this._pushString(obj)\n case 'Boolean':\n return this._pushBoolean(obj)\n case 'Object':\n return this._pushObject(obj)\n case 'Array':\n return this._pushArray(this, obj)\n case 'Uint8Array':\n return this._pushBuffer(this, Buffer.isBuffer(obj) ? obj : Buffer.from(obj))\n case 'Null':\n return this._pushUInt8(NULL)\n case 'Undefined':\n return this._pushUndefined(obj)\n case 'Map':\n return this._pushMap(this, obj)\n case 'Set':\n return this._pushSet(this, obj)\n case 'URL':\n return this._pushUrl(this, obj)\n case 'BigNumber':\n return this._pushBigNumber(this, obj)\n case 'Date':\n return this._pushDate(this, obj)\n case 'RegExp':\n return this._pushRegexp(this, obj)\n case 'Symbol':\n switch (obj) {\n case SYMS.NULL:\n return this._pushObject(null)\n case SYMS.UNDEFINED:\n return this._pushUndefined(undefined)\n // TODO: Add pluggable support for other symbols\n default:\n throw new Error('Unknown symbol: ' + obj.toString())\n }\n default:\n throw new Error('Unknown type: ' + typeof obj + ', ' + (obj ? obj.toString() : ''))\n }\n }\n\n finalize () {\n if (this.offset === 0) {\n return null\n }\n\n var result = this.result\n var resultLength = this.resultLength\n var resultMethod = this.resultMethod\n var offset = this.offset\n\n // Determine the size of the buffer\n var size = 0\n var i = 0\n\n for (; i < offset; i++) {\n size += resultLength[i]\n }\n\n var res = Buffer.allocUnsafe(size)\n var index = 0\n var length = 0\n\n // Write the content into the result buffer\n for (i = 0; i < offset; i++) {\n length = resultLength[i]\n\n switch (resultMethod[i]) {\n case 0:\n result[i].copy(res, index)\n break\n case 1:\n res.writeUInt8(result[i], index, true)\n break\n case 2:\n res.writeUInt16BE(result[i], index, true)\n break\n case 3:\n res.writeUInt32BE(result[i], index, true)\n break\n case 4:\n res.writeDoubleBE(result[i], index, true)\n break\n case 5:\n res.write(result[i], index, length, 'utf8')\n break\n default:\n throw new Error('unkown method')\n }\n\n index += length\n }\n\n var tmp = res\n\n this._reset()\n\n return tmp\n }\n\n _reset () {\n this.result = []\n this.resultMethod = []\n this.resultLength = []\n this.offset = 0\n }\n\n /**\n * Encode the given value\n * @param {*} o\n * @returns {Buffer}\n */\n static encode (o) {\n const enc = new Encoder()\n const ret = enc.pushAny(o)\n if (!ret) {\n throw new Error('Failed to encode input')\n }\n\n return enc.finalize()\n }\n}\n\nmodule.exports = Encoder\n","\"use strict\";\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cbor = __importStar(require(\"./value\"));\nconst BufferClasses = [\n ArrayBuffer,\n Uint8Array,\n Uint16Array,\n Uint32Array,\n Int8Array,\n Int16Array,\n Int32Array,\n Float32Array,\n Float64Array,\n];\nclass JsonDefaultCborEncoder {\n // @param _serializer The CBOR Serializer to use.\n // @param _stable Whether or not keys from objects should be sorted (stable). This is\n // particularly useful when testing encodings between JSON objects.\n constructor(_serializer, _stable = false) {\n this._serializer = _serializer;\n this._stable = _stable;\n this.name = \"jsonDefault\";\n this.priority = -100;\n }\n match(value) {\n return [\"undefined\", \"boolean\", \"number\", \"string\", \"object\"].indexOf(typeof value) != -1;\n }\n encode(value) {\n switch (typeof value) {\n case \"undefined\":\n return cbor.undefined_();\n case \"boolean\":\n return cbor.bool(value);\n case \"number\":\n if (Math.floor(value) === value) {\n return cbor.number(value);\n }\n else {\n return cbor.doubleFloat(value);\n }\n case \"string\":\n return cbor.string(value);\n case \"object\":\n if (value === null) {\n return cbor.null_();\n }\n else if (Array.isArray(value)) {\n return cbor.array(value.map((x) => this._serializer.serializeValue(x)));\n }\n else if (BufferClasses.find((x) => value instanceof x)) {\n return cbor.bytes(value.buffer);\n }\n else if (Object.getOwnPropertyNames(value).indexOf(\"toJSON\") !== -1) {\n return this.encode(value.toJSON());\n }\n else if (value instanceof Map) {\n const m = new Map();\n for (const [key, item] of value.entries()) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n else {\n const m = new Map();\n for (const [key, item] of Object.entries(value)) {\n m.set(key, this._serializer.serializeValue(item));\n }\n return cbor.map(m, this._stable);\n }\n default:\n throw new Error(\"Invalid value.\");\n }\n }\n}\nexports.JsonDefaultCborEncoder = JsonDefaultCborEncoder;\nclass ToCborEncoder {\n constructor() {\n this.name = \"cborEncoder\";\n this.priority = -90;\n }\n match(value) {\n return typeof value == \"object\" && typeof value[\"toCBOR\"] == \"function\";\n }\n encode(value) {\n return value.toCBOR();\n }\n}\nexports.ToCborEncoder = ToCborEncoder;\nclass CborSerializer {\n constructor() {\n this._encoders = new Set();\n }\n static withDefaultEncoders(stable = false) {\n const s = new this();\n s.addEncoder(new JsonDefaultCborEncoder(s, stable));\n s.addEncoder(new ToCborEncoder());\n return s;\n }\n removeEncoder(name) {\n // Has to make an extra call to values() to ensure it doesn't break on iteration.\n for (const encoder of this._encoders.values()) {\n if (encoder.name == name) {\n this._encoders.delete(encoder);\n }\n }\n }\n addEncoder(encoder) {\n this._encoders.add(encoder);\n }\n getEncoderFor(value) {\n let chosenEncoder = null;\n for (const encoder of this._encoders) {\n if (!chosenEncoder || encoder.priority > chosenEncoder.priority) {\n if (encoder.match(value)) {\n chosenEncoder = encoder;\n }\n }\n }\n if (chosenEncoder === null) {\n throw new Error(\"Could not find an encoder for value.\");\n }\n return chosenEncoder;\n }\n serializeValue(value) {\n return this.getEncoderFor(value).encode(value);\n }\n serialize(value) {\n return this.serializeValue(value);\n }\n}\nexports.CborSerializer = CborSerializer;\nclass SelfDescribeCborSerializer extends CborSerializer {\n serialize(value) {\n return cbor.raw(new Uint8Array([\n // Self describe CBOR.\n ...new Uint8Array([0xd9, 0xd9, 0xf7]),\n ...new Uint8Array(super.serializeValue(value)),\n ]));\n }\n}\nexports.SelfDescribeCborSerializer = SelfDescribeCborSerializer;\n//# sourceMappingURL=serializer.js.map","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : PropTypes.instanceOf(Element)\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}"],"sourceRoot":""}