{"version":3,"sources":["../node_modules/tslib/tslib.es6.js","../../src/index.ts","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/buffer/index.js","../node_modules/url/url.js","../../src/Amplify.ts","../node_modules/crypto-js/core.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/react-redux/es/index.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationDetails.js","../node_modules/amazon-cognito-identity-js/es/BigInteger.js","../node_modules/amazon-cognito-identity-js/es/AuthenticationHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoJwtToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoAccessToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoIdToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoRefreshToken.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserSession.js","../node_modules/amazon-cognito-identity-js/es/DateHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserAttribute.js","../node_modules/amazon-cognito-identity-js/es/StorageHelper.js","../node_modules/amazon-cognito-identity-js/es/CognitoUser.js","../node_modules/amazon-cognito-identity-js/es/UserAgent.js","../node_modules/amazon-cognito-identity-js/es/Client.js","../node_modules/amazon-cognito-identity-js/es/CognitoUserPool.js","../node_modules/amazon-cognito-identity-js/es/CookieStorage.js","../node_modules/axios/lib/utils.js","../../src/JS.ts","index.ts","../../Logger/ConsoleLogger.ts","../node_modules/uuid/dist/esm-browser/v1.js","../node_modules/uuid/dist/esm-browser/v35.js","../node_modules/uuid/dist/esm-browser/md5.js","../node_modules/uuid/dist/esm-browser/v3.js","../node_modules/uuid/dist/esm-browser/sha1.js","../node_modules/uuid/dist/esm-browser/v5.js","../../Platform/version.ts","../../Platform/index.ts","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/fast-xml-parser/src/util.js","../../src/zenObservable.ts","../../types/Auth.ts","../../src/Auth.ts","../../OAuth/urlOpener.ts","../../OAuth/OAuth.ts","../../OAuth/oauthStorage.ts","../../src/Errors.ts","../../src/urlListener.ts","../node_modules/tweetnacl/nacl-fast.js","../../Utils/CacheUtils.ts","../../src/StorageCache.ts","../../src/BrowserStorageCache.ts","../../src/RestAPI.ts","../../src/API.ts","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/js-cookie/src/js.cookie.js","../../OAuthHelper/GoogleOAuth.ts","../../OAuthHelper/FacebookOAuth.ts","../../OAuthHelper/index.ts","../node_modules/invariant/browser.js","../node_modules/uuid/dist/esm-browser/bytesToUuid.js","../node_modules/crypto-js/hmac-sha256.js","../node_modules/webpack/buildin/global.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../../StorageHelper/index.ts","../node_modules/crypto-js/sha256.js","../../../../protocols/Aws_restXml.ts","../../../../commands/GetObjectCommand.ts","../../../../commands/DeleteObjectCommand.ts","../../../../commands/ListObjectsCommand.ts","../../src/EventStreamMarshaller.ts","../../src/getEventMessageStream.ts","../../src/getChunkedStream.ts","../../src/getDeserializingStream.ts","../../src/utils.ts","../../../endpoints.ts","../../../runtimeConfig.shared.ts","../../../runtimeConfig.browser.ts","../../src/provider.ts","../../../S3Client.ts","../../providers/axios-http-handler.ts","../../../../commands/PutObjectCommand.ts","../../../../commands/CreateMultipartUploadCommand.ts","../../../../commands/UploadPartCommand.ts","../../../../commands/CompleteMultipartUploadCommand.ts","../../../../commands/AbortMultipartUploadCommand.ts","../../../../commands/ListPartsCommand.ts","../../providers/httpHandlerOptions.ts","../../providers/AWSS3ProviderManagedUpload.ts","../../providers/AWSS3Provider.ts","../../src/Storage.ts","../node_modules/crypto-js/enc-base64.js","../node_modules/axios/index.js","../node_modules/moment/moment.js","../node_modules/react-dom/index.js","../../src/constants.ts","../node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","../../Providers/PubSubProvider.ts","../../Providers/MqttOverWSProvider.ts","../../Providers/AWSAppSyncProvider.ts","../node_modules/@aws-amplify/pubsub/node_modules/graphql/language/location.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/error/printError.mjs","../node_modules/@aws-amplify/pubsub/node_modules/graphql/error/GraphQLError.mjs","../../Util/Retry.ts","../../Providers/AWSAppSyncRealTimeProvider.ts","../../src/PubSub.ts","../node_modules/redux/es/redux.js","../../Util/DateUtils.ts","../../src/Signer.ts","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/index.js","../node_modules/events/events.js","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/location.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/printError.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/GraphQLError.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/visitor.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printer.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/inspect.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/invariant.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/source.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/defineToStringTag.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/syntaxError.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/blockStringValue.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/lexer.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/kinds.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/directiveLocation.mjs","../node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/parser.mjs","../../src/GraphQLAPI.ts","../node_modules/prop-types/index.js","../node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","../node_modules/@reach/router/es/lib/utils.js","../node_modules/@reach/router/es/lib/history.js","../node_modules/@reach/router/es/index.js","../node_modules/object-assign/index.js","../node_modules/remove-accents/index.js","../node_modules/webpack/buildin/module.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../src/Hub.ts","../node_modules/react-is/index.js","../../ServiceWorker/ServiceWorker.ts","../../resolveLogins.ts","../../../../protocols/Aws_json1_1.ts","../../../../commands/GetCredentialsForIdentityCommand.ts","../../fromCognitoIdentity.ts","../../IndexedDbStorage.ts","../../localStorage.ts","../../InMemoryStorage.ts","../../../../commands/GetIdCommand.ts","../../fromCognitoIdentityPool.ts","../../../CognitoIdentityClient.ts","../../src/Credentials.ts","../node_modules/hex-to-rgba/build/index.js","../node_modules/classnames/index.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/process/browser.js","../node_modules/lodash/lodash.js","../node_modules/mime/index.js","../node_modules/crypto-js/lib-typedarrays.js","../../src/Parser.ts","../../src/defaultStrategy.ts","../../src/delayDecider.ts","../../src/retryDecider.ts","../../src/escape-uri.ts","../../src/ie11Sha256.ts","../../src/isEmptyData.ts","../../src/webCryptoSha256.ts","../../src/ProviderError.ts","../../src/deserializerMiddleware.ts","../../src/serializerMiddleware.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/defaults.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/rng-browser.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/bytesToUuid.js","../../src/bucketHostname.ts","../../src/Int64.ts","../../../../../../webpack/universalModuleDefinition","../../../../../../webpack/bootstrap","../../../../../../src/index.ts","../aws_amplify_ui/src/Anchor.css?a212","../aws_amplify_ui/src/Button.css?3605","../aws_amplify_ui/src/Form.css?0c1e","../aws_amplify_ui/src/Hint.css?8415","../aws_amplify_ui/src/Input.css?6c63","../aws_amplify_ui/src/Nav.css?2528","../aws_amplify_ui/src/PhotoPicker.css?07be","../aws_amplify_ui/src/Section.css?9b19","../aws_amplify_ui/src/SelectInput.css?12a6","../aws_amplify_ui/src/Strike.css?fcd8","../aws_amplify_ui/src/Toast.css?b30c","../aws_amplify_ui/src/Totp.css?55f1","../aws_amplify_ui/src/XR.css?528c","../../constants.ts","../../credentialDerivation.ts","../../getCanonicalHeaders.ts","../../getPayloadHash.ts","../../cloneRequest.ts","../../prepareRequest.ts","../../utilDate.ts","../../SignatureV4.ts","../../moveHeadersToQuery.ts","../../hasHeader.ts","../../getCanonicalQuery.ts","../node_modules/react-bem-helper/index.js","../node_modules/create-react-context/lib/index.js","../../node_modules/tslib/tslib.es6.js","../../src/functions/utils.ts","../../src/helpers/debug.ts","../../src/errors/errors.js","../../src/functions/chaining-functions.js","../../src/helpers/promise.js","../../src/functions/temp-transaction.ts","../../src/globals/constants.ts","../../src/functions/combine.ts","../../src/dbcore/keyrange.ts","../../src/classes/table/table.ts","../../src/helpers/Events.js","../../src/functions/make-class-constructor.ts","../../src/classes/collection/collection-helpers.ts","../../src/classes/collection/collection.ts","../../src/functions/compare-functions.ts","../../src/classes/where-clause/where-clause-helpers.ts","../../src/classes/where-clause/where-clause.ts","../../src/functions/quirks.ts","../../src/functions/event-wrappers.ts","../../src/classes/transaction/transaction.ts","../../src/helpers/index-spec.ts","../../src/helpers/table-schema.ts","../../src/dbcore/get-key-extractor.ts","../../src/dbcore/get-effective-keys.ts","../../src/dbcore/dbcore-indexeddb.ts","../../src/classes/dexie/generate-middleware-stacks.ts","../../src/classes/version/schema-helpers.ts","../../src/classes/version/version.ts","../../src/helpers/database-enumerator.ts","../../src/classes/dexie/vip.ts","../../src/classes/dexie/dexie-open.ts","../../src/helpers/yield-support.ts","../../src/classes/dexie/transaction-helpers.ts","../../src/dbcore/virtual-index-middleware.ts","../../src/hooks/hooks-middleware.ts","../../src/classes/dexie/dexie.ts","../../src/classes/collection/collection-constructor.ts","../../src/classes/table/table-constructor.ts","../../src/classes/transaction/transaction-constructor.ts","../../src/classes/version/version-constructor.ts","../../src/classes/where-clause/where-clause-constructor.ts","../../src/classes/dexie/dexie-static-props.ts","../../src/RestClient.ts","../node_modules/zen-observable/index.js","../node_modules/paho-mqtt/paho-mqtt.js","../node_modules/fast-xml-parser/src/parser.js","../node_modules/warning/warning.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/react-is/cjs/react-is.production.min.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/create-react-context/lib/implementation.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/gud/index.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/crypto-js/hmac.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/url/util.js","../node_modules/querystring-es3/index.js","../node_modules/querystring-es3/decode.js","../node_modules/querystring-es3/encode.js","../../src/EndpointsConfig.ts","../../src/RegionConfig.ts","../../src/HandlerConfig.ts","../../src/httpResponse.ts","../../src/httpRequest.ts","../../src/isValidHostname.ts","../../src/retryMiddleware.ts","../../src/configurations.ts","../../src/escape-uri-path.ts","../../src/middleware.ts","../../src/client.ts","../../src/MiddlewareStack.ts","../../src/command.ts","../../src/isa.ts","../../src/lazy-json.ts","../../src/extended-encode-uri-component.ts","../../src/date-utils.ts","../../src/crossPlatformSha256.ts","../../src/pureJs.ts","../../src/whatwgEncodingApi.ts","../../src/jsSha256.ts","../../src/RawSha256.ts","supportsWebCrypto.ts","MsWindow.ts","../../src/fetch-http-handler.ts","../../src/request-timeout.ts","../../src/chain.ts","../../src/fromStatic.ts","../../src/memoize.ts","../../src/serdePlugin.ts","../node_modules/mime/Mime.js","../node_modules/mime/types/standard.js","../node_modules/mime/types/other.js","../node_modules/axios/lib/axios.js","../node_modules/axios/node_modules/is-buffer/index.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/zen-observable/lib/Observable.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/v1.js","../node_modules/@aws-amplify/pubsub/node_modules/uuid/v4.js","../../src/bucketEndpointMiddleware.ts","../../src/XmlNode.ts","../../src/escape-attribute.ts","../../src/XmlText.ts","../../src/escape-element.ts","../node_modules/fast-xml-parser/src/node2json.js","../node_modules/fast-xml-parser/src/xmlNode.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/nimndata.js","../node_modules/fast-xml-parser/src/node2json_str.js","../node_modules/fast-xml-parser/src/json2xml.js","../../src/validate-bucket-name.ts","../../src/HeaderMarshaller.ts","../../src/splitMessage.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__exportStar","m","exports","__values","o","__read","ar","error","__spread","concat","__spreadArrays","il","k","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","default","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","get","__classPrivateFieldSet","set","module","require","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","arg","encodingOrOffset","Error","allocUnsafe","from","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","toString","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","x","list","pos","swap16","swap32","swap64","equals","inspect","max","match","join","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_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","code","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","punycode","util","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","parse","urlParse","source","relative","resolveObject","format","isString","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","url","parseQueryString","slashesDenoteHost","isObject","u","queryIndex","splitter","uSplit","split","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","part","newpart","validParts","notHost","bit","unshift","toASCII","h","ae","esc","encodeURIComponent","escape","qm","keys","stringify","charAt","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","splice","isAbsolute","CryptoJS","F","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","init","$super","instance","properties","propertyName","clone","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","random","nBytes","rcache","m_w","m_z","mask","_r","C_enc","enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","unescape","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","message","_createHmacHelper","HMAC","algo","factory","ReactReduxContext","React","createContext","batch","callback","nullListeners","notify","createListenerCollection","first","clear","listener","listeners","subscribe","isSubscribed","prev","Subscription","store","parentSub","unsubscribe","handleChangeWrapper","bind","_proto","addNestedSub","trySubscribe","notifyNestedSubs","onStateChange","Boolean","tryUnsubscribe","Provider","_ref","context","children","contextValue","useMemo","subscription","previousState","getState","useEffect","Context","createElement","useIsomorphicLayoutEffect","window","document","useLayoutEffect","useReduxContext","useContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","dispatch","useDispatch","refEquality","createSelectorHook","selector","equalityFn","_useReduxContext","contextSub","selectedState","forceRender","useReducer","latestSubscriptionCallbackError","useRef","latestSelector","latestSelectedState","current","err","stack","checkForUpdates","newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","dbits","AuthenticationDetails","ValidationData","Username","Password","AuthParameters","ClientMetadata","validationData","authParameters","clientMetadata","username","password","getUsername","getPassword","getValidationData","getAuthParameters","getClientMetadata","BigInteger","nbi","inBrowser","navigator","appName","am","w","xl","xh","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","fromInt","nbits","Montgomery","mp","invDigit","mpl","mph","um","mt2","convert","abs","dlShiftTo","divRemTo","compareTo","ZERO","subTo","revert","copyTo","reduce","u0","drShiftTo","mulTo","multiplyTo","sqrTo","squareTo","mi","sh","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","ts","ms","nsh","ys","y0","yt","d1","d2","ONE","qd","addTo","negate","km","bitLength","add","subtract","multiply","divide","modPow","z","k1","g2","is1","r2","randomBytes","AuthenticationHelper","PoolName","N","hexHash","smallAValue","generateRandomSmallA","getLargeAValue","infoBits","poolName","getSmallAValue","_this","largeAValue","calculateA","hexRandom","generateRandomString","getRandomPassword","randomPassword","getSaltDevices","SaltToHashDevices","getVerifierDevices","verifierDevices","generateHashDevice","deviceGroupKey","_this2","combinedString","hashedString","padHex","verifierDevicesNotPadded","_this3","A","calculateU","B","UHexHash","hashHex","SHA256","computehkdf","ikm","salt","infoBitsWordArray","ikmWordArray","saltWordArray","prk","HmacSHA256","hmac","getPasswordAuthenticationKey","serverBValue","_this4","UValue","usernamePassword","usernamePasswordHash","xValue","calculateS","sValue","hkdf","_this5","gModPowXN","err2","getNewPasswordRequiredChallengeUserAttributePrefix","bigInt","hashStr","CognitoJwtToken","token","jwtToken","payload","decodePayload","getJwtToken","getExpiration","exp","getIssuedAt","iat","JSON","CognitoAccessToken","_CognitoJwtToken","subClass","superClass","_temp","AccessToken","CognitoIdToken","IdToken","CognitoRefreshToken","RefreshToken","getToken","CognitoUserSession","ClockDrift","idToken","refreshToken","accessToken","clockDrift","calculateClockDrift","getIdToken","getRefreshToken","getAccessToken","getClockDrift","Date","isValid","adjusted","monthNames","weekNames","DateHelper","getNowString","now","weekDay","getUTCDay","month","getUTCMonth","day","getUTCDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","getUTCFullYear","CognitoUserAttribute","Name","Value","getValue","setValue","getName","setName","name","dataMemory","MemoryStorage","setItem","getItem","removeItem","StorageHelper","storageWindow","localStorage","exception","getStorage","userAgent","CognitoUser","Pool","pool","Session","client","signInUserSession","authenticationFlowType","storage","Storage","keyPrefix","getClientId","userDataKey","setSignInUserSession","clearCachedUserData","cacheTokens","getSignInUserSession","getAuthenticationFlowType","setAuthenticationFlowType","initiateAuth","authDetails","USERNAME","clientMetaData","jsonReq","AuthFlow","ClientId","getUserContextData","UserContextData","request","onFailure","challengeName","ChallengeName","challengeParameters","ChallengeParameters","customChallenge","getCognitoUserSession","AuthenticationResult","onSuccess","authenticateUser","authenticateUserPlainUsernamePassword","authenticateUserDefaultAuth","authenticationHelper","getUserPoolId","dateHelper","deviceKey","DEVICE_KEY","errOnAValue","aValue","SRP_A","CHALLENGE_NAME","USER_ID_FOR_SRP","SRP_B","SALT","getCachedDeviceKeyAndPassword","errOnHkdf","dateNow","SECRET_BLOCK","signatureString","Base64","challengeResponses","PASSWORD_CLAIM_SECRET_BLOCK","TIMESTAMP","PASSWORD_CLAIM_SIGNATURE","jsonReqResp","ChallengeResponses","respondToAuthChallenge","challenge","challengeCallback","errChallenge","dataChallenge","clearCachedDeviceKeyAndPassword","errAuthenticate","dataAuthenticate","authenticateUserInternal","PASSWORD","authResult","mfaRequired","selectMFAType","mfaSetup","totpRequired","userAttributes","rawRequiredAttributes","requiredAttributes","userAttributesPrefix","newPasswordRequired","newDeviceMetadata","NewDeviceMetadata","DeviceGroupKey","DeviceKey","errGenHash","deviceSecretVerifierConfig","Salt","PasswordVerifier","DeviceSecretVerifierConfig","DeviceName","errConfirm","dataConfirm","cacheDeviceKeyAndPassword","UserConfirmationNecessary","getDeviceResponse","completeNewPasswordChallenge","newPassword","requiredAttributeData","finalUserAttributes","forEach","NEW_PASSWORD","_this6","errAValue","errHkdf","confirmRegistration","confirmationCode","forceAliasCreation","ConfirmationCode","ForceAliasCreation","sendCustomChallengeAnswer","answerChallenge","_this7","ANSWER","sendMFACode","mfaType","_this8","SMS_MFA_CODE","mfaTypeSelection","SOFTWARE_TOKEN_MFA_CODE","changePassword","oldUserPassword","newUserPassword","PreviousPassword","ProposedPassword","enableMFA","mfaOptions","DeliveryMedium","AttributeName","MFAOptions","setUserMfaPreference","smsMfaSettings","softwareTokenMfaSettings","SMSMfaSettings","SoftwareTokenMfaSettings","disableMFA","deleteUser","_this9","clearCachedUser","updateAttributes","attributes","_this10","UserAttributes","getUserData","bypassCache","getUserAttributes","userData","attributeList","attribute","userAttribute","getMFAOptions","params","_this11","latestUserData","cacheUserData","refresh","refreshSession","refreshError","deleteAttributes","UserAttributeNames","resendConfirmationCode","getSession","idTokenKey","accessTokenKey","refreshTokenKey","clockDriftKey","cachedSession","_this12","REFRESH_TOKEN","lastUserKey","deviceKeyKey","authenticationResult","clearCachedTokens","randomPasswordKey","deviceGroupKeyKey","forgotPassword","inputVerificationCode","confirmPassword","getAttributeVerificationCode","attributeName","verifyAttribute","Code","getDevice","forgetSpecificDevice","forgetDevice","_this13","setDeviceStatusRemembered","DeviceRememberedStatus","setDeviceStatusNotRemembered","listDevices","paginationToken","Limit","PaginationToken","globalSignOut","_this14","signOut","sendMFASelectionAnswer","_this15","associateSoftwareToken","_this16","associateSecretCode","SecretCode","verifySoftwareToken","totpCode","friendlyDeviceName","_this17","UserCode","FriendlyDeviceName","errRespond","dataRespond","UserAgent","appendToCognitoUserAgent","content","Client","region","endpoint","operation","response","options","headers","method","mode","cache","fetch","resp","json","ok","__type","Message","_error","statusCode","status","ex","CognitoUserPool","UserPoolId","AdvancedSecurityDataCollectionFlag","test","userPoolId","clientId","advancedSecurityDataCollectionFlag","signUp","cognitoUser","returnData","user","userConfirmed","UserConfirmed","userSub","UserSub","codeDeliveryDetails","CodeDeliveryDetails","getCurrentUser","lastAuthUser","AmazonCognitoAdvancedSecurityData","amazonCognitoAdvancedSecurityDataConst","advancedSecurityData","getData","EncodedData","CookieStorage","domain","expires","secure","Cookies","index","cookies","isFunction","fn","isArrayBuffer","isFormData","FormData","isArrayBufferView","isNumber","isUndefined","isDate","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isStandardBrowserEnv","product","merge","assignValue","deepMerge","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","node","clockseq","seedBytes","rng","msecs","getTime","nsecs","dt","tl","tmh","bytesToUuid","version","hashfunc","generateUUID","namespace","off","stringToBytes","uuid","hex","uuidToBytes","idx","DNS","URL","safeAdd","lsw","md5cmn","num","cnt","md5ff","md5gg","md5hh","md5ii","md5","v3","v35","msg","input","output","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","ROTL","sha1","v5","K","H","M","W","T","v4","rnds","ii","_extends","nameStartChar","nameRegexp","regexName","RegExp","isExist","isEmptyObject","arrayMode","buildOptions","defaultOptions","props","newOptions","isName","getAllMatches","regex","matches","allmatches","Observable","AuthError","nacl","gf","Float64Array","randombytes","_0","_9","gf0","gf1","_121665","D","D2","X","Y","I","ts64","vn","xi","yi","crypto_verify_16","crypto_verify_32","crypto_core_salsa20","inp","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","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","finish","crypto_onetimeauth_verify","hpos","crypto_secretbox","crypto_secretbox_open","set25519","car25519","sel25519","pack25519","neq25519","par25519","unpack25519","Z","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","x32","x16","crypto_scalarmult_base","crypto_box_keypair","crypto_box_beforenm","blocks","d0","d3","d4","d5","d6","d7","d8","d9","hibit","h0","h1","h2","h3","h4","h5","h6","h7","h8","h9","r0","r1","r3","r4","r5","r6","r7","r8","r9","mac","macpos","want","crypto_box_afternm","crypto_box_open_afternm","crypto_hashblocks_hl","hh","hl","bh0","bh1","bh2","bh3","bh4","bh5","bh6","bh7","bl0","bl1","bl2","bl3","bl4","bl5","bl6","bl7","th","wh","Int32Array","wl","ah0","ah1","ah2","ah3","ah4","ah5","ah6","ah7","al0","al1","al2","al3","al4","al5","al6","al7","crypto_hash","cswap","pack","tx","ty","zi","scalarmult","scalarbase","crypto_sign_keypair","pk","sk","seeded","L","modL","carry","crypto_sign","sm","smlen","crypto_sign_open","chk","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","secretbox","nonce","open","box","keyLength","nonceLength","overheadLength","scalarMult","base","scalarLength","groupElementLength","publicKey","secretKey","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","amount","_objectWithoutPropertiesLoose","excluded","sourceKeys","define","OldCookies","api","noConflict","decode","converter","defaults","toUTCString","stringifiedAttributes","cookie","jar","parts","getJSON","remove","withConverter","condition","args","argIndex","framesToPop","byteToHex","bth","root","undef","Function","_typeof","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","_hash","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","nBitsTotal","nBitsLeft","chunkedStream","eventMarshaller","chunkReader","getReader","ReadableStream","controller","close","unmarshall","messageType","unmodeledError","enqueue","sourceReader","currentMessageTotalLength","currentMessagePendingLength","currentMessage","messageLengthBuffer","allocateMessage","DataView","setUint32","chunkLength","currentOffset","bytesRemaining","numBytesForTotal","getUint32","numBytesToWrite","messageStream","deserializer","messageReader","readableStream","reader","labelValue","_a","config","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","map","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","hookCallback","some","hooks","setHookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","valueOf","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","to","prop","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","dd","ww","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","sort","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","date","daysInMonth","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","setUTCFullYear","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","E","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","xmlNode","TagType","regx","attributeNamePrefix","attrNodeName","textNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseNodeValue","parseAttributeValue","trimValues","cdataTagName","cdataPositionChar","tagValueProcessor","tagName","attrValueProcessor","attrName","stopNodes","processTagValue","parsedTags","parentTagName","parseValue","parseTrueNumberOnly","checkForTagType","resolveNameSpace","tagname","tags","shouldParse","attrsRegx","buildAttributesMap","attrStr","attrs","attrCollection","getTraversalObj","xmlData","xmlObj","currentNode","tagsRegx","tag","nextTag","tagType","parent","child","attrsMap","startIndex","childNode","addChild","getLocation","position","lineRegexp","line","column","highlightSourceAtLocation","location","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","lines","existingLines","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","return","_ref3","printPrefixedLines","GraphQLError","nodes","positions","originalError","extensions","_nodes","_source","loc","_locations","_positions","_extensions","defineProperties","enumerable","writable","locations","captureStackTrace","printedLocations","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","printError","variables","provider","formatProdErrorMessage","$$observable","observable","randomString","substring","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","getPrototypeOf","createStore","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","action","replaceReducer","nextReducer","outerSubscribe","observer","observeState","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","canonical_request","rnds8","ReflectOwnKeys","R","ReflectApply","ownKeys","NumberIsNaN","EventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","emit","warned","emitter","count","onceWrapper","fired","removeListener","wrapFn","_onceWrap","state","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","setMaxListeners","getMaxListeners","doError","er","handler","addListener","on","prependListener","once","prependOnceListener","originalListener","spliceOne","removeAllListeners","rawListeners","eventNames","QueryDocumentKeys","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","isNode","maybeNode","kind","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","visitorKeys","inArray","edits","ancestors","newRoot","isEdited","editOffset","editKey","editValue","visitFn","visit","printDocASTReducer","definitions","varDefs","wrap","variableDefinitions","directives","selectionSet","variable","defaultValue","block","selections","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isDescription","escaped","indent","printBlockString","_ref11","_ref12","_ref13","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","every","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","maybeString","invariant","_defineProperty","classObject","Source","syntaxError","blockStringValue","rawString","commonIndent","leadingWhitespace","isBlank","createLexer","startOfFileToken","Tok","TokenKind","SOF","lastToken","lineStart","advance","advanceLexer","lookahead","EOF","readToken","COMMENT","toStringTag","freeze","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","getTokenDesc","printCharCode","lexer","bodyLength","startPosition","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","readBlockString","charCode","uniCharCode","readString","unexpectedCharacterMessage","char2hex","Kind","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","sourceObj","many","parseDefinition","parseDocument","parseName","expect","peek","parseExecutableDefinition","parseTypeSystemDefinition","keywordToken","expectKeyword","parseDirectives","parseOperationTypeDefinition","unexpected","parseSchemaExtension","parseScalarTypeExtension","parseImplementsInterfaces","parseFieldsDefinition","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionMemberTypes","parseUnionTypeExtension","parseEnumValuesDefinition","parseEnumTypeExtension","parseInputFieldsDefinition","parseInputObjectTypeExtension","parseTypeSystemExtension","peekDescription","parseOperationDefinition","experimentalFragmentVariables","parseFragmentName","parseVariableDefinitions","parseNamedType","parseSelectionSet","parseFragmentDefinition","parseOperationType","operationToken","parseVariableDefinition","experimentalVariableDefinitionDirectives","parseVariable","parseTypeReference","skip","parseValueLiteral","parseSelection","parseFragment","nameOrAlias","parseArguments","parseField","isConst","parseConstArgument","parseArgument","parseConstValue","parseValueValue","any","parseList","parseObjectField","parseObject","parseStringLiteral","parseDirective","parseSchemaDefinition","parseDescription","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseArgumentDefs","parseDirectiveLocation","parseDirectiveLocations","parseDirectiveDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseInputValueDef","parseEnumValueDefinition","startToken","noLocation","Loc","endToken","atToken","openKind","parseFn","closeKind","componentWillMount","getDerivedStateFromProps","setState","componentWillReceiveProps","nextProps","prevState","componentWillUpdate","nextState","prevProps","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","__suppressDeprecationWarning","startsWith","pick","routes","uri","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","missed","route","routeSegments","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","reservedNames","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","isDynamic","rankRoute","isRootSegment","SEGMENT_POINTS","_source$location","origin","canUseDOM","encodeURI","decodeURI","history","globalHistory","transitioning","resolveTransition","_onTransitionComplete","listen","popstateListener","addEventListener","removeEventListener","navigate","_ref$replace","go","replaceState","pushState","transition","createHistory","initialPath","searchIndex","initialLocation","states","entries","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","createMemorySource","_objectWithoutProperties","_classCallCheck","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","createNamedContext","Ctx","displayName","LocationContext","Location","Consumer","LocationProvider","_React$Component","_len","_key","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","componentDidUpdate","componentDidMount","requestAnimationFrame","unmounted","componentWillUnmount","render","Component","defaultProps","BaseContext","baseuri","basepath","Router","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","component","domProps","Children","createRoute","element","cloneElement","FocusWrapper","FocusHandler","wrapperProps","PureComponent","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","contains","activeElement","_props2","style","_props2$component","Comp","outline","tabIndex","ref","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","componentName","newApiName","maybeSnapshot","snapshot","polyfill","forwardRef","Link","innerRef","_props$getProps","getProps","anchorProps","encodedHref","isCurrent","isPartiallyCurrent","onClick","event","shouldNavigate","preventDefault","shouldReplace","_location$state","restState","obj1","obj2","obj1Keys","shallowCompare","RedirectRequest","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","redirectTo","Redirect","stripSlashes","Fragment","validateRedirect","elementPath","defaultPrevented","button","metaKey","altKey","ctrlKey","shiftKey","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","characterMap","chars","allAccents","firstAccent","removeAccents","webpackPolyfill","paths","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","descriptor","ServiceWorkerClass","InMemoryStorage","hexToDecimal","formatRgb","decimalObject","parameterA","parsedA","hashlessHex","removeHash","hexesToDecimals","nakedHex","isShort","parseHex","hasOwn","classNames","classes","argType","inner","toPropertyKey","toPrimitive","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","noop","nextTick","title","browser","env","argv","versions","binding","cwd","chdir","umask","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","object","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","placeholder","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","transform","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","reverse","Map","Set","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","newValue","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","id","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","memoizeCapped","quote","subString","difference","differenceBy","differenceWith","findIndex","findLastIndex","head","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","group","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","find","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","cancel","flush","defer","delay","resolver","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","omit","CLONE_DEEP_FLAG","basePick","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerFirst","snakeCase","startCase","upperCase","pattern","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","multiplier","multiplicand","minuend","subtrahend","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","strLength","padEnd","padStart","radix","floating","reduceRight","repeat","sample","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","template","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","uniqueId","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","view","getView","iterLength","takeCount","iterIndex","commit","Mime","superInit","subInit","Int8Array","Uint8ClampedArray","Int16Array","Uint32Array","Float32Array","typedArrayByteLength","maxRetries","retryDecider","delayDecider","defaultRetryDecider","defaultDelayDecider","shouldRetry","retryAttempted","retry","retries","totalDelay","$metadata","totalRetryDelay","isThrottlingError","THROTTLING_RETRY_DELAY_BASE","DEFAULT_RETRY_DELAY_BASE","ExponentialBackOffStrategy","delayBase","attempts","MAXIMUM_RETRY_DELAY","connectionError","hasMetadata","httpStatusCode","RETRYABLE_STATUS_CODES","isStillProcessingError","isClockSkewError","hexEncode","util_locate_window_1","Sha256","BLOCK_SIZE","DIGEST_LENGTH","tryNextLink","ProviderError","serializer","endpointResolvedOptions","utils","encode","paramsSerializer","serializedParams","hashmarkIndex","__CANCEL__","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","XMLHttpRequest","getDefaultAdapter","transformRequest","transformResponse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","common","buildURL","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","Authorization","btoa","onreadystatechange","readyState","responseURL","responseHeaders","getAllResponseHeaders","responseType","responseText","statusText","onabort","onerror","ontimeout","xsrfValue","withCredentials","setRequestHeader","onDownloadProgress","onUploadProgress","upload","cancelToken","promise","abort","send","enhanceError","config1","config2","Cancel","DOMAIN_PATTERN","IP_ADDRESS_PATTERN","DOTS_PATTERN","DOT_PATTERN","S3_HOSTNAME_PATTERN","S3_US_EAST_1_ALTNAME_PATTERN","accelerateEndpoint","baseHostname","bucketName","dualstackEndpoint","pathStyleEndpoint","tlsCompatible","bucketEndpoint","hostnameSuffix","isDnsCompatibleBucketName","fromNumber","Int64","negative","installedModules","__webpack_require__","moduleId","modules","ns","iso8601","serialized","listToArray","withDefaults","blockName","modifierDelimiter","outputIsString","modifiers","extraClassNames","modifier","extra","rootName","className","BEMHelper","_react2","_interopRequireDefault","_implementation2","_global","extension","getProto","_hasOwn","setProp","functionOrGetSet","derive","Child","Parent","getPropertyDescriptor","_slice","override","origFunc","overridedFactory","assert","asap","setImmediate","arrayToObject","extractor","nameAndValue","getByKeyPath","keyPath","rv","innerObj","setByKeyPath","currentKeyPath","remainingKeyPath","shallowClone","intrinsicTypeNames","intrinsicTypes","intrinsicTypeNameSet","deepClone","getValueOf","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","iteratorSymbol","getIteratorOf","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","isAsyncFunction","debug","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","getErrorWithStack","prettyStack","numIgnoredFrames","frame","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","DexieError","_e","getMultiErrorMessage","failures","ModifyError","successCount","failedKeys","BulkError","_stack","errnames","BaseException","exceptions","fullName","msgOrInner","Syntax","SyntaxError","Type","Range","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","onsuccess","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","thiz","INTERNAL","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","observe","setAttribute","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","unhandleds","onunhandled","globalError","pgp","uh","PSD","numScheduledCalls","tickFinalizers","DexiePromise","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","possibleAwait","decrementExpectedAwaits","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","shouldExecuteTick","beginMicroTickScope","_then","propagateAllListeners","endMicroTickScope","reason","_promise","tryCatch","origProp","addPossiblyUnhandledError","finalizePhysicalTick","callListener","markErrorAsHandled","getStack","stacks","errorName","failure","numPrev","wasRootExec","callbacks","unhandledErrs","finalizers","PromiseReject","errorCatcher","outerScope","switchToZone","catch","finally","onFinally","handle","Timeout","snapShot","all","onPossibleParallellAsync","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","run_at_end_of_this_or_next_physical_tick","allSettled","possiblePromises","results","AggregateError","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","sourceTaskId","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","bEnteringZone","job","currentZone","targetEnv","GlobalPromise","a3","outerZone","origThen","onResolved","UNHANDLEDREJECTION","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","tempTransaction","db","storeNames","openComplete","letThrough","trans","_createTransaction","_dbSchema","_completion","isBeingOpened","_options","autoOpen","dbReadyPromise","DEXIE_VERSION","maxString","minKey","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","isIEOrEdge","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","lowerOpen","upperOpen","_trans","writeLocked","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","transless","keyOrCrit","where","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","compoundIndex","primKey","ix","compound","_maxKey","kp","idxByName","idb","_deps","indexedDB","cmp","filterFunction","toCollection","and","thenShortcut","numRows","Collection","mapToClass","mappedClass","readHook","defineClass","mutate","numFailures","lastResult","primaryKey","outbound","keyOrObject","InvalidArgument","modify","put","delete","bulkGet","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","bulkPut","bulkDelete","numKeys","Events","ctx","evs","eventName","subscriber","addEventType","chainFunction","defaultFunction","addConfiguredEvents","subscribers","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","unique","iter","coreTrans","cursor","stop","fail","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","continue","advancer","_read","_ctx","table","_write","_addAlgorithm","lastPart","getval","order","sorter","aVal","bVal","offsetLeft","rowsLeft","bIncludeStopEntry","indexName","_ondirectionchange","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","multi","strKey","changes","modifyer","anythingModified","extractKey","Dexie","totalFailures","applyMutateResult","expectedCount","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","coreRange","simpleCompare","simpleCompareReverse","collectionOrWhereClause","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","needles","upperNeedles","lowerNeedles","nextKeySuffix","needlesLen","initDirection","upperFactory","lowerFactory","needleBounds","needle","nb","firstPossibleNeedle","lowestPossibleCasing","casing","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","eventRejectHandler","stopPropagation","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","idbdb","dbOpenError","MissingAPI","OpenFailed","active","transaction","ev","_reject","oncomplete","_resolve","bWriteLock","ReadOnly","_root","waitFor","promiseLike","_waitingFor","_waitingQueue","objectStore","spin","_spinCount","currentWaitPromise","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","Table","createIndexSpec","auto","nameFromKeyPath","createTableSchema","getKeyExtractor","getSinglePathKeyExtractor","getEffectiveKeys","req","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","isAddOrPut","errorHandler","_reqno","setResult","args1","args2","keyCount","callbackCount","successHandler","_pos","nonInfinitLimit","idbKeyRange","getAll","openKeyCursor","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","generateMiddlewareStacks","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","Transaction","removeTablesApi","lowerVersionFirst","_cfg","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","createTable","populate","_versions","buildGlobalSchema","anyContentUpgraderHasRun","runQueue","oldSchema","newSchema","adjustToExistingIndexNames","del","change","oldDef","newDef","def","recreate","oldIndexes","newIndexes","idxName","oldIdx","newIdx","getSchemaDiff","tuple","Upgrade","addIndex","deleteIndex","contentUpgrade","promiseFollowed","decrementor","storeName","deleteObjectStore","deleteRemovedTables","updateTablesAndIndexes","createObjectStore","createIndex","idbindex","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","databaseEnumerator","_parseStoresSpec","stores","outSchema","indexNum","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","vip","dexieOpen","Debug.debug","openCanceller","Debug.getErrorWithStack","resolveDbReady","dbReadyResolve","upgradeTransaction","dbName","autoSchema","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","delreq","deleteDatabase","NoSuchDatabase","oldVer","readGlobalSchema","onversionchange","vcFired","onReadyBeingFired","ready","fireRemainders","remainders","awaitIterator","callNext","onError","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","returnValue","scopeFuncIsAsync","PrematureCommit","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","isVirtual","virtualIndex","translateRequest","virtualCursor","createVirtualCursor","hooksMiddleware","downCore","downTable","tableMiddleware","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","deps","dependencies","addons","cancelOpen","bSticky","keyRangeGenerator","keyRange","whereCtx","readingHook","createTableConstructor","complete","wasActive","createTransactionConstructor","Version","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","backendDB","isOpen","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","InvalidTable","_Dexie","databaseName","exists","getDatabaseNames","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","Debug.setDebug","delByKeyPath","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","semVer","maxKey","dbNamesTable","hasDatabasesNative","databases","dbnames","infos","DatabaseEnumerator","domError","PahoMQTT","MESSAGE_TYPE","validate","errorStr","validKey","ERROR","INVALID_TYPE","scope","OK","text","CONNECT_TIMEOUT","SUBSCRIBE_TIMEOUT","UNSUBSCRIBE_TIMEOUT","PING_TIMEOUT","INTERNAL_ERROR","CONNACK_RETURNCODE","SOCKET_ERROR","SOCKET_CLOSE","MALFORMED_UTF","UNSUPPORTED","INVALID_STATE","INVALID_ARGUMENT","UNSUPPORTED_OPERATION","INVALID_STORED_DATA","INVALID_MQTT_MESSAGE_TYPE","MALFORMED_UNICODE","BUFFER_FULL","CONNACK_RC","substitutions","part1","part2","MqttProtoIdentifierv3","MqttProtoIdentifierv4","WireMessage","decodeMessage","digit","startingPos","messageInfo","remLength","endPos","wireMessage","sessionPresent","returnCode","qos","readUint16","topicName","parseUTF8","messageIdentifier","retained","duplicate","destinationName","payloadMessage","writeUint16","writeString","utf8Length","stringToUTF8","UTF8Length","lowCharCode","utf16","byte1","byte2","byte3","byte4","willMessagePayloadBytes","topicStrLength","destinationNameLength","mqttVersion","willMessage","payloadBytes","userName","topics","requestedQos","mbi","numBytes","encodeMBI","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","_disconnected","timeoutSeconds","ClientImpl","WebSocket","_wsuri","_localKey","_msg_queue","_buffered_msg_queue","_sentMessages","_receivedMessages","_notify_msg_sent","_message_identifier","_sequence","restore","connected","maxMessageIdentifier","connectOptions","hostIndex","onConnected","onConnectionLost","onMessageDelivered","onMessageArrived","traceFunction","_connectTimeout","sendPinger","receivePinger","_reconnectInterval","_reconnecting","_reconnectTimeout","disconnectedPublishing","disconnectedBufferSize","receiveBuffer","_traceBuffer","_MAX_TRACE_ENTRIES","connect","connectOptionsMasked","_traceMask","uris","_doConnect","subscribeOptions","grantedQos","invocationContext","errorCode","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribeOptions","sequence","disconnect","getTraceLog","startTrace","stopTrace","wsurl","useSSL","uriParts","binaryType","onopen","_on_socket_open","onmessage","_on_socket_message","_on_socket_error","onclose","_on_socket_close","_process_queue","storedMessage","pubRecReceived","messageBytes","payloadHex","_socket_send","messageCount","messages","_deframeMessages","_handleMessage","errorStack","sentMessage","receivedMessage","sequencedMessages","msgId","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","mqttVersionExplicit","record","severity","traceObject","masked","traceObjectMasked","attr","newPayload","newDestinationName","newQos","newRetained","newTopic","newDuplicate","ipv6AddSBracket","clientIdLength","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","trace","hosts","ports","stringPayload","usingURIs","ipv6","topic","publish","isConnected","nodeToJson","xmlToNodeobj","x2xmlnode","validator","validationOption","convertToJson","convertTonimn","convert2nimn","convertToJsonString","j2xParser","parseToNimn","StrictMode","Profiler","Suspense","SuspenseList","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","forceUpdate","G","isPureReactComponent","J","__self","__source","$$typeof","_owner","O","Q","_status","_result","load","_render","U","V","suspense","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_payload","_init","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createMutableSource","_getVersion","_workInProgressVersionPrimary","_workInProgressVersionSecondary","createRef","isValidElement","lazy","memo","unstable_useOpaqueIdentifier","useOpaqueIdentifier","unstable_withSuspenseConfig","useCallback","useDebugValue","useDeferredValue","useImperativeHandle","useMutableSource","useState","useTransition","aa","ba","ca","da","ea","fa","ha","ja","la","ma","currentTarget","ka","na","oa","pa","qa","extractEvents","eventTypes","ra","phasedRegistrationNames","sa","registrationName","ta","ua","va","wa","xa","ya","za","Aa","Ba","stateNode","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","removeAttribute","setAttributeNS","Ya","$a","ab","bb","eb","fb","gb","hb","ib","jb","kb","lb","mb","ob","pb","qb","rb","sb","tb","ub","nodeName","wb","_valueTracker","stopTracking","vb","zb","Ab","defaultChecked","_wrapperState","initialChecked","Bb","initialValue","controlled","Cb","Db","Eb","Fb","ownerDocument","Hb","Gb","Ib","selected","defaultSelected","disabled","Jb","dangerouslySetInnerHTML","Kb","Lb","Mb","textContent","Nb","Ob","Pb","Qb","Rb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","Sb","lastChild","nodeValue","Tb","Ub","animationend","animationiteration","animationstart","transitionend","Vb","Wb","Xb","animation","Yb","Zb","$b","ac","bc","cc","dc","ec","alternate","effectTag","fc","memoizedState","dehydrated","gc","ic","sibling","hc","jc","kc","lc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","srcElement","correspondingUseElement","parentNode","oc","pc","qc","topLevelType","nativeEvent","targetInst","rc","eventSystemFlags","sc","containerInfo","tc","uc","vc","wc","passive","xc","yc","zc","Ac","Bc","Cc","bubbled","captured","eventPriority","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Tc","blockedOn","targetContainers","Uc","Vc","Wc","pointerId","Xc","Zc","unstable_runWithPriority","hydrate","$c","ad","bd","cd","unstable_scheduleCallback","unstable_NormalPriority","ed","unstable_UserBlockingPriority","fd","gd","hd","jd","Yc","ld","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","md","nd","od","setProperty","pd","menuitem","area","br","embed","hr","img","keygen","link","meta","param","track","wbr","rd","is","sd","td","ud","vd","wd","nextSibling","xd","compareDocumentPosition","yd","HTMLIFrameElement","contentWindow","zd","contentEditable","Ad","Bd","Cd","autoFocus","Dd","__html","Ed","Fd","Gd","Hd","Id","previousSibling","Jd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","dispatchConfig","_targetInst","_dispatchCurrentTargets","Interface","isDefaultPrevented","Xd","eventPool","Yd","destructor","Wd","getPooled","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","Zd","$d","be","ce","de","ee","documentMode","fe","ge","he","ie","beforeInput","compositionEnd","compositionStart","compositionUpdate","je","ke","keyCode","le","me","pe","which","ne","char","oe","qe","color","email","tel","re","se","te","ue","ve","we","xe","ye","ze","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","Ge","_isInputEventSupported","He","Ie","Alt","Control","Meta","Shift","Je","getModifierState","Ke","Le","Me","Ne","Oe","Pe","screenX","screenY","clientX","clientY","pageX","pageY","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Qe","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Re","Se","Te","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ue","defaultView","parentWindow","We","Xe","Ye","Ze","$e","select","af","bf","cf","df","ef","selectionStart","selectionEnd","anchorNode","getSelection","anchorOffset","focusNode","focusOffset","ff","onSelect","animationName","elapsedTime","pseudoElement","hf","clipboardData","jf","kf","lf","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","mf","nf","of","dataTransfer","pf","touches","targetTouches","changedTouches","qf","rf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","sf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","tf","uf","vf","wf","xf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","yf","zf","Af","getChildContext","Bf","__reactInternalMemoizedMergedChildContext","Cf","Df","Ef","Ff","unstable_cancelCallback","Gf","unstable_shouldYield","Hf","unstable_requestPaint","If","unstable_now","Jf","unstable_getCurrentPriorityLevel","Kf","unstable_ImmediatePriority","Lf","Mf","Nf","unstable_LowPriority","Of","unstable_IdlePriority","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","childExpirationTime","lg","firstContext","expirationTime","mg","ng","observedBits","responders","og","pg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","qg","rg","suspenseConfig","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Dg","_reactInternals","Bg","Cg","Eg","shouldComponentUpdate","Fg","Gg","Hg","Ig","Jg","_stringRef","Kg","Lg","Mg","lastEffect","nextEffect","firstEffect","Ng","Og","elementType","Pg","implementation","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","documentElement","$g","ah","bh","ch","memoizedProps","revealOrder","dh","responder","eh","fh","gh","ih","jh","pendingProps","baseTime","retryTime","kh","lh","mh","nh","oh","ph","mutableSourceLastPendingUpdateTime","qh","rh","vh","yh","zh","Ah","Bh","Ch","Dh","baseQueue","Eh","Fh","Gh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Hh","Ih","Jh","getSnapshot","setSnapshot","Kh","Lh","Mh","Nh","Oh","destroy","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","Ai","Bi","readContext","useResponder","useEvent","Kd","ci","di","ei","fi","gi","ji","ki","li","ni","pendingContext","oi","pi","qi","lastPendingTime","ri","fallback","unstable_avoidThisFallback","si","ti","ui","_reactRetry","vi","wi","isBackwards","rendering","renderingStartTime","tailExpiration","tailMode","Ci","Di","wasMultiple","multiple","onclick","createElementNS","createTextNode","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","componentStack","Ni","WeakSet","Qi","Pi","Ri","__reactInternalSnapshotBeforeUpdate","Si","Ti","Ui","Vi","Wi","onCommitFiberUnmount","Xi","Oi","Yi","Zi","$i","aj","bj","cj","insertBefore","_reactRootContainer","dj","ej","display","fj","gj","Wj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","Aj","Bj","lastExpiredTime","Cj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Dj","Ej","Fj","Gj","Hj","Ij","Jj","finishedWork","finishedExpirationTime","Kj","Lj","lastSuspendedTime","timeoutHandle","busyMinDurationMs","busyDelayMs","Mj","Nj","Oj","Pj","Qj","Rj","pingCache","Sj","ia","xb","Tj","kd","Uj","Vj","Xj","firstSuspendedTime","rangeCount","Za","activeElementDetached","focusedElem","selectionRange","Yj","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","yb","onCommitFiberRoot","Zj","ak","bk","hidden","ck","unstable_observedBits","dk","pendingChildren","ek","mutableSourceFirstPendingUpdateTime","fk","gk","hk","ik","jk","lk","_internalRoot","mk","nk","Sc","qk","hasAttribute","unmount","querySelectorAll","form","findFiberByHostInstance","bundleType","rendererPackageName","uk","rendererConfig","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","vk","isDisabled","supportsFiber","inject","createBlockingRoot","createPortal","createRoot","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_discreteUpdates","unstable_flushControlled","unstable_flushDiscreteUpdates","unstable_renderSubtreeIntoContainer","unstable_scheduleHydration","MessageChannel","unstable_forceFrameRate","performance","cancelAnimationFrame","port2","port1","postMessage","sortIndex","startTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","jsx","jsxs","_react","_propTypes2","_gud2","MAX_SIGNED_31_BIT_INT","createEventEmitter","handlers","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","_Component","oldValue","isRequired","_Component2","onUpdate","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","propFullName","secret","getShim","ReactPropTypes","bigint","bool","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","b64","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","isLE","mLen","eLen","eMax","eBias","nBits","rt","log","LN2","_hasher","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","counter","ucs2encode","digitToBasic","flag","adapt","delta","numPoints","baseMinusTMin","basic","oldi","baseMinusT","inputLength","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","qs","sep","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","normalizeEndpoint","urlParser","tls","regionInfoProvider","normalizeRegion","regionDefaultProvider","requestHandler","isInstance","HttpResponse","cloned","HttpRequest","paramName","retryMiddleware","retryStrategy","retryMiddlewareOptions","getRetryPlugin","applyToStack","clientStack","escapeUri","userAgentMiddleware","userAgentHeader","runtime","defaultUserAgent","customUserAgent","getUserAgentMiddlewareOptions","getUserAgentPlugin","middlewareStack","MiddlewareStack","command","optionsOrCb","resolveMiddleware","absoluteEntries","relativeEntries","entriesNameMap","middleware","addRelativeTo","relation","toMiddleware","stepWeights","priorityWeights","_from","toRemove","removeByName","removeByReference","removeByTag","removed","plugin","normalizeRelativeEntries","absoluteMiddlewareNamesMap","normalized","relativeMiddlewareNamesMap","anchors","resolvedCurr","resolvedPrev","resolvedNext","orphanedRelativeEntries","visited","geMiddlewareList","middlewareList","entryList","defaultAnchorValue","relativeEntry","orphanedEntry","initialize","serialize","build","finalizeRequest","deserialize","normal","Command","ids","StringWrapper","Class","deserializeJSON","LazyJsonString","dayOfWeek","dayOfMonthInt","hoursInt","minutesInt","secondsInt","surrogatePair","decoded","byte","nextByte","encoded","byteValue","TextEncoder","TextDecoder","subtleCryptoMethods","supportsSecureRandom","supportsSubtleCrypto","subtle","generateKey","encrypt","iv","additionalData","tagLength","httpOptions","abortSignal","requestTimeoutInMs","requestTimeout","aborted","abortError","queryString","buildQueryString","requestOptions","Headers","AbortController","fetchRequest","Request","raceOfPromises","fetchHeaders","transformedHeaders","bufferBody","blob","FetchHttpHandler","timeoutInMs","timeoutError","providers","staticValue","promisified","isExpired","requiresRefresh","isConstant","resolved","deserializerMiddlewareOption","serializerMiddlewareOption","commandStack","deserializerMiddleware","serializerMiddleware","_types","getType","getExtension","typeMap","force","$1","Axios","mergeConfig","createInstance","defaultConfig","axios","instanceConfig","CancelToken","isCancel","promises","InterceptorManager","dispatchRequest","interceptors","getUri","eject","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","baseURL","fns","normalizedName","isAxiosError","fileName","lineNumber","columnNumber","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","requestURL","toGMTString","relativeURL","executor","resolvePromise","_defineProperties","_createClass","protoProps","staticProps","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","cleanupSubscription","_cleanup","closeSubscription","_observer","_queue","notifySubscription","onNotify","flushSubscription","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","hasSeed","hasValue","acc","startNext","subscriptions","completeIfDone","closed","_item","items","bucketEndpointMiddleware","replaceBucketInPath","bucketHostname","useAccelerateEndpoint","useDualstackEndpoint","forcePathStyle","bucketEndpointMiddlewareOptions","getBucketEndpointPlugin","withName","addAttribute","addChildNode","hasChildren","xmlText","escapeAttribute","XmlNode","escapeElement","XmlText","jObj","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","tagFound","reachedRoot","closingTag","readAttributeStr","validateAttributeString","tagClosed","otg","afterAmp","validateAmpersand","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","nilChar","missingChar","nilPremitive","missingPremitive","emptyChar","emptyValue","boundryChar","objStart","arrStart","arrayEnd","charsArr","e_schema","hasValidData","itemSchema","arr_len","arr_i","processValue","isAppChar","x2j","_cToJsonStr","indentBy","supressEmptyNode","Parser","isAttribute","attrPrefixLen","isCDATA","replaceCDATAstr","replaceCDATAarr","indentate","tagEndChar","newLine","buildTextNode","buildEmptyTextNode","buildObjNode","buildEmptyObjNode","buildTextValNode","buildObjectNode","cdata","j2x","arrLen","Ks","validateBucketNameMiddleware","Bucket","validateBucketNameMiddlewareOptions","getValidateBucketNamePlugin","unused","toUtf8","fromUtf8","headerMarshaller","HeaderMarshaller","marshall","rawHeaders","checksum","Crc32","digest","formatHeaders","EventStreamMarshaller","chunks","headerName","formatHeaderValue","header","shortView","setUint8","setInt16","intView","setInt32","longBytes","binView","setUint16","binBytes","utf8Bytes","strView","strBytes","tsBytes","UUID_PATTERN","uuidBytes","fromHex","nameLength","getUint8","BOOLEAN_TAG","BYTE_TAG","getInt8","SHORT_TAG","getInt16","INT_TAG","getInt32","LONG_TAG","binaryLength","getUint16","BINARY_TAG","STRING_TAG","TIMESTAMP_TAG","UUID_TAG","PRELUDE_LENGTH","messageLength","headerLength","expectedPreludeChecksum","PRELUDE_MEMBER_LENGTH","expectedMessageChecksum","checksummer","onChunk","chunkSize","fileReader","FileReader","totalBytesRead","readAsArrayBuffer"],"mappings":"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L,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,OAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,KACL,SAAK,KACL,SAAK,IACL,SAAK,IACL,OAAK,KACL,OAAK,KACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,UAAM,IACN,UAAM,IACN,SAAK,SACL,SAAK,SACL,SAAK,SACL,SAAK,SACL,UAAM,IACN,UAAM,IACN,UAAM,IACN,UAAM,IACN,UAAM,IACN,UAAM,IACN,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IACL,SAAK,IAC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","file":"static/js/9.35d803ec.chunk.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export function blobReader(\n blob: Blob,\n onChunk: (chunk: Uint8Array) => void,\n chunkSize: number = 1024 * 1024\n): Promise {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n\n fileReader.addEventListener(\"error\", reject);\n fileReader.addEventListener(\"abort\", reject);\n\n const size = blob.size;\n let totalBytesRead = 0;\n\n function read() {\n if (totalBytesRead >= size) {\n resolve();\n return;\n }\n fileReader.readAsArrayBuffer(\n blob.slice(totalBytesRead, Math.min(size, totalBytesRead + chunkSize))\n );\n }\n\n fileReader.addEventListener(\"load\", event => {\n const result = (event.target as any).result;\n onChunk(new Uint8Array(result));\n totalBytesRead += result.byteLength;\n // read the next block\n read();\n });\n\n // kick off the read\n read();\n });\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","'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","/*!\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","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","import { ConsoleLogger as LoggerClass } from './Logger';\nvar logger = new LoggerClass('Amplify');\nvar Amplify = /** @class */ (function () {\n function Amplify() {\n }\n Amplify.register = function (comp) {\n logger.debug('component registered in amplify', comp);\n this._components.push(comp);\n if (typeof comp.getModuleName === 'function') {\n Amplify[comp.getModuleName()] = comp;\n }\n else {\n logger.debug('no getModuleName method for component', comp);\n }\n };\n Amplify.configure = function (config) {\n var _this = this;\n if (!config)\n return this._config;\n this._config = Object.assign(this._config, config);\n logger.debug('amplify config', this._config);\n this._components.map(function (comp) {\n comp.configure(_this._config);\n });\n return this._config;\n };\n Amplify.addPluggable = function (pluggable) {\n if (pluggable &&\n pluggable['getCategory'] &&\n typeof pluggable['getCategory'] === 'function') {\n this._components.map(function (comp) {\n if (comp['addPluggable'] &&\n typeof comp['addPluggable'] === 'function') {\n comp.addPluggable(pluggable);\n }\n });\n }\n };\n Amplify._components = [];\n Amplify._config = {};\n // for backward compatibility to avoid breaking change\n // if someone is using like Amplify.Auth\n Amplify.Auth = null;\n Amplify.Analytics = null;\n Amplify.API = null;\n Amplify.Storage = null;\n Amplify.I18n = null;\n Amplify.Cache = null;\n Amplify.PubSub = null;\n Amplify.Interactions = null;\n Amplify.Pushnotification = null;\n Amplify.UI = null;\n Amplify.XR = null;\n Amplify.Predictions = null;\n Amplify.DataStore = null;\n Amplify.Logger = LoggerClass;\n Amplify.ServiceWorker = null;\n return Amplify;\n}());\nexport { Amplify };\n/**\n * @deprecated use named import\n */\nexport default Amplify;\n//# sourceMappingURL=Amplify.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t /*\n\t * Local polyfil of Object.create\n\t */\n\t var create = Object.create || (function () {\n\t function F() {};\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }())\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var i = 0; i < thatSigBytes; i += 4) {\n\t thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t var r = (function (m_w) {\n\t var m_w = m_w;\n\t var m_z = 0x3ade68b1;\n\t var mask = 0xffffffff;\n\n\t return function () {\n\t m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t var result = ((m_z << 0x10) + m_w) & mask;\n\t result /= 0x100000000;\n\t result += 0.5;\n\t return result * (Math.random() > .5 ? 1 : -1);\n\t }\n\t });\n\n\t for (var i = 0, rcache; i < nBytes; i += 4) {\n\t var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t rcache = _r() * 0x3ade67b7;\n\t words.push((_r() * 0x100000000) | 0);\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t var processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));","import React from 'react';\nexport var ReactReduxContext =\n/*#__PURE__*/\nReact.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore =\n/*#__PURE__*/\ncreateStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch =\n/*#__PURE__*/\ncreateDispatchHook();","import { useReducer, useRef, useMemo, useContext } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestSelectedState = useRef();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(store.getState());\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender({});\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production' && !selector) {\n throw new Error(\"You must pass a selector to useSelectors\");\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n return useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector =\n/*#__PURE__*/\ncreateSelectorHook();","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar AuthenticationDetails = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationDetails object\n * @param {object=} data Creation options.\n * @param {string} data.Username User being authenticated.\n * @param {string} data.Password Plain-text password to authenticate with.\n * @param {(AttributeArg[])?} data.ValidationData Application extra metadata.\n * @param {(AttributeArg[])?} data.AuthParamaters Authentication paramaters for custom auth.\n */\n function AuthenticationDetails(data) {\n var _ref = data || {},\n ValidationData = _ref.ValidationData,\n Username = _ref.Username,\n Password = _ref.Password,\n AuthParameters = _ref.AuthParameters,\n ClientMetadata = _ref.ClientMetadata;\n\n this.validationData = ValidationData || {};\n this.authParameters = AuthParameters || {};\n this.clientMetadata = ClientMetadata || {};\n this.username = Username;\n this.password = Password;\n }\n /**\n * @returns {string} the record's username\n */\n\n\n var _proto = AuthenticationDetails.prototype;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {string} the record's password\n */\n ;\n\n _proto.getPassword = function getPassword() {\n return this.password;\n }\n /**\n * @returns {Array} the record's validationData\n */\n ;\n\n _proto.getValidationData = function getValidationData() {\n return this.validationData;\n }\n /**\n * @returns {Array} the record's authParameters\n */\n ;\n\n _proto.getAuthParameters = function getAuthParameters() {\n return this.authParameters;\n }\n /**\n * @returns {ClientMetadata} the clientMetadata for a Lambda trigger\n */\n ;\n\n _proto.getClientMetadata = function getClientMetadata() {\n return this.clientMetadata;\n };\n\n return AuthenticationDetails;\n}();\n\nexport { AuthenticationDetails as default };","// A small implementation of BigInteger based on http://www-cs-students.stanford.edu/~tjw/jsbn/\n//\n// All public methods have been removed except the following:\n// new BigInteger(a, b) (only radix 2, 4, 8, 16 and 32 supported)\n// toString (only radix 2, 4, 8, 16 and 32 supported)\n// negate\n// abs\n// compareTo\n// bitLength\n// mod\n// equals\n// add\n// subtract\n// multiply\n// divide\n// modPow\nexport default BigInteger;\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n// (public) Constructor\n\nfunction BigInteger(a, b) {\n if (a != null) this.fromString(a, b);\n} // return new, unset BigInteger\n\n\nfunction nbi() {\n return new BigInteger(null);\n} // Bits per digit\n\n\nvar dbits; // JavaScript engine analysis\n\nvar canary = 0xdeadbeefcafe;\nvar j_lm = (canary & 0xffffff) == 0xefcafe; // am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n\nfunction am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n\n return c;\n} // am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n\n\nfunction am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff,\n xh = x >> 15;\n\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n\n return c;\n} // Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\n\n\nfunction am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff,\n xh = x >> 14;\n\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n\n return c;\n}\n\nvar inBrowser = typeof navigator !== 'undefined';\n\nif (inBrowser && j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if (inBrowser && j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else {\n // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = (1 << dbits) - 1;\nBigInteger.prototype.DV = 1 << dbits;\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP; // Digit conversions\n\nvar BI_RM = '0123456789abcdefghijklmnopqrstuvwxyz';\nvar BI_RC = new Array();\nvar rr, vv;\nrr = '0'.charCodeAt(0);\n\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'a'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nrr = 'A'.charCodeAt(0);\n\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\n\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return c == null ? -1 : c;\n} // (protected) copy this to r\n\n\nfunction bnpCopyTo(r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n\n r.t = this.t;\n r.s = this.s;\n} // (protected) set from integer value x, -DV <= x < DV\n\n\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = x < 0 ? -1 : 0;\n if (x > 0) this[0] = x;else if (x < -1) this[0] = x + this.DV;else this.t = 0;\n} // return bigint initialized to value\n\n\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n} // (protected) set from string and radix\n\n\nfunction bnpFromString(s, b) {\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n this.t = 0;\n this.s = 0;\n var i = s.length,\n mi = false,\n sh = 0;\n\n while (--i >= 0) {\n var x = intAt(s, i);\n\n if (x < 0) {\n if (s.charAt(i) == '-') mi = true;\n continue;\n }\n\n mi = false;\n if (sh == 0) this[this.t++] = x;else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & (1 << this.DB - sh) - 1) << sh;\n this[this.t++] = x >> this.DB - sh;\n } else this[this.t - 1] |= x << sh;\n sh += k;\n if (sh >= this.DB) sh -= this.DB;\n }\n\n this.clamp();\n if (mi) BigInteger.ZERO.subTo(this, this);\n} // (protected) clamp off excess high words\n\n\nfunction bnpClamp() {\n var c = this.s & this.DM;\n\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n} // (public) return string representation in given radix\n\n\nfunction bnToString(b) {\n if (this.s < 0) return '-' + this.negate().toString(b);\n var k;\n if (b == 16) k = 4;else if (b == 8) k = 3;else if (b == 2) k = 1;else if (b == 32) k = 5;else if (b == 4) k = 2;else throw new Error('Only radix 2, 4, 8, 16, 32 are supported');\n var km = (1 << k) - 1,\n d,\n m = false,\n r = '',\n i = this.t;\n var p = this.DB - i * this.DB % k;\n\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & (1 << p) - 1) << k - p;\n d |= this[--i] >> (p += this.DB - k);\n } else {\n d = this[i] >> (p -= k) & km;\n\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n\n if (d > 0) m = true;\n if (m) r += int2char(d);\n }\n }\n\n return m ? r : '0';\n} // (public) -this\n\n\nfunction bnNegate() {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n} // (public) |this|\n\n\nfunction bnAbs() {\n return this.s < 0 ? this.negate() : this;\n} // (public) return + if this > a, - if this < a, 0 if equal\n\n\nfunction bnCompareTo(a) {\n var r = this.s - a.s;\n if (r != 0) return r;\n var i = this.t;\n r = i - a.t;\n if (r != 0) return this.s < 0 ? -r : r;\n\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) return r;\n }\n\n return 0;\n} // returns bit length of the integer x\n\n\nfunction nbits(x) {\n var r = 1,\n t;\n\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n\n return r;\n} // (public) return the number of bits in \"this\"\n\n\nfunction bnBitLength() {\n if (this.t <= 0) return 0;\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM);\n} // (protected) r = this << n*DB\n\n\nfunction bnpDLShiftTo(n, r) {\n var i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r.t = this.t + n;\n r.s = this.s;\n} // (protected) r = this >> n*DB\n\n\nfunction bnpDRShiftTo(n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n} // (protected) r = this << n\n\n\nfunction bnpLShiftTo(n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB),\n c = this.s << bs & this.DM,\n i;\n\n for (i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = this[i] >> cbs | c;\n c = (this[i] & bm) << bs;\n }\n\n for (i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n} // (protected) r = this >> n\n\n\nfunction bnpRShiftTo(n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n\n if (bs > 0) r[this.t - ds - 1] |= (this.s & bm) << cbs;\n r.t = this.t - ds;\n r.clamp();\n} // (protected) r = this - a\n\n\nfunction bnpSubTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c -= a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c -= a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c < -1) r[i++] = this.DV + c;else if (c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n} // (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\n\n\nfunction bnpMultiplyTo(a, r) {\n var x = this.abs(),\n y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n\n r.s = 0;\n r.clamp();\n if (this.s != a.s) BigInteger.ZERO.subTo(r, r);\n} // (protected) r = this^2, r != this (HAC 14.16)\n\n\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n\n while (--i >= 0) {\n r[i] = 0;\n }\n\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n\n if (r.t > 0) r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n r.s = 0;\n r.clamp();\n} // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\n\n\nfunction bnpDivRemTo(m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) return;\n var pt = this.abs();\n\n if (pt.t < pm.t) {\n if (q != null) q.fromInt(0);\n if (r != null) this.copyTo(r);\n return;\n }\n\n if (r == null) r = nbi();\n var y = nbi(),\n ts = this.s,\n ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n } else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) return;\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt,\n d2 = (1 << this.F1) / yt,\n e = 1 << this.F2;\n var i = r.t,\n j = i - ys,\n t = q == null ? nbi() : q;\n y.dlShiftTo(j, t);\n\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) BigInteger.ZERO.subTo(q, q);\n }\n\n r.t = ys;\n r.clamp();\n if (nsh > 0) r.rShiftTo(nsh, r); // Denormalize remainder\n\n if (ts < 0) BigInteger.ZERO.subTo(r, r);\n} // (public) this mod a\n\n\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r, r);\n return r;\n} // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\n\n\nfunction bnpInvDigit() {\n if (this.t < 1) return 0;\n var x = this[0];\n if ((x & 1) == 0) return 0;\n var y = x & 3; // y == 1/x mod 2^2\n\n y = y * (2 - (x & 0xf) * y) & 0xf; // y == 1/x mod 2^4\n\n y = y * (2 - (x & 0xff) * y) & 0xff; // y == 1/x mod 2^8\n\n y = y * (2 - ((x & 0xffff) * y & 0xffff)) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n\n y = y * (2 - x * y % this.DV) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n\n return y > 0 ? this.DV - y : -y;\n}\n\nfunction bnEquals(a) {\n return this.compareTo(a) == 0;\n} // (protected) r = this + a\n\n\nfunction bnpAddTo(a, r) {\n var i = 0,\n c = 0,\n m = Math.min(a.t, this.t);\n\n while (i < m) {\n c += this[i] + a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n if (a.t < this.t) {\n c += a.s;\n\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += this.s;\n } else {\n c += this.s;\n\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n\n c += a.s;\n }\n\n r.s = c < 0 ? -1 : 0;\n if (c > 0) r[i++] = c;else if (c < -1) r[i++] = this.DV + c;\n r.t = i;\n r.clamp();\n} // (public) this + a\n\n\nfunction bnAdd(a) {\n var r = nbi();\n this.addTo(a, r);\n return r;\n} // (public) this - a\n\n\nfunction bnSubtract(a) {\n var r = nbi();\n this.subTo(a, r);\n return r;\n} // (public) this * a\n\n\nfunction bnMultiply(a) {\n var r = nbi();\n this.multiplyTo(a, r);\n return r;\n} // (public) this / a\n\n\nfunction bnDivide(a) {\n var r = nbi();\n this.divRemTo(a, r, null);\n return r;\n} // Montgomery reduction\n\n\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << m.DB - 15) - 1;\n this.mt2 = 2 * m.t;\n} // xR mod m\n\n\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r, r);\n return r;\n} // x/R mod m\n\n\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n} // x = x/R mod m (HAC 14.32)\n\n\nfunction montReduce(x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = j * this.mpl + ((j * this.mph + (x[i] >> 15) * this.mpl & this.um) << 15) & x.DM; // use am to combine the multiply-shift-add into one call\n\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t); // propagate carry\n\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) x.subTo(this.m, x);\n} // r = \"x^2/R mod m\"; x != r\n\n\nfunction montSqrTo(x, r) {\n x.squareTo(r);\n this.reduce(r);\n} // r = \"xy/R mod m\"; x,y != r\n\n\nfunction montMulTo(x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n}\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo; // (public) this^e % m (HAC 14.85)\n\nfunction bnModPow(e, m, callback) {\n var i = e.bitLength(),\n k,\n r = nbv(1),\n z = new Montgomery(m);\n if (i <= 0) return r;else if (i < 18) k = 1;else if (i < 48) k = 3;else if (i < 144) k = 4;else if (i < 768) k = 5;else k = 6; // precomputation\n\n var g = new Array(),\n n = 3,\n k1 = k - 1,\n km = (1 << k) - 1;\n g[1] = z.convert(this);\n\n if (k > 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n\n var j = e.t - 1,\n w,\n is1 = true,\n r2 = nbi(),\n t;\n i = nbits(e[j]) - 1;\n\n while (j >= 0) {\n if (i >= k1) w = e[j] >> i - k1 & km;else {\n w = (e[j] & (1 << i + 1) - 1) << k1 - i;\n if (j > 0) w |= e[j - 1] >> this.DB + i - k1;\n }\n n = k;\n\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n\n if (n > 0) z.sqrTo(r, r2);else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n\n while (j >= 0 && (e[j] & 1 << i) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n\n var result = z.revert(r);\n callback(null, result);\n return result;\n} // protected\n\n\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.addTo = bnpAddTo; // public\n\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.modPow = bnModPow; // \"constants\"\n\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport SHA256 from 'crypto-js/sha256';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\n\nvar randomBytes = function randomBytes(nBytes) {\n return Buffer.from(CryptoJS.lib.WordArray.random(nBytes).toString(), 'hex');\n};\n\nimport BigInteger from './BigInteger';\nvar initN = 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1' + '29024E088A67CC74020BBEA63B139B22514A08798E3404DD' + 'EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245' + 'E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' + 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D' + 'C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F' + '83655D23DCA3AD961C62F356208552BB9ED529077096966D' + '670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' + 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9' + 'DE2BCBF6955817183995497CEA956AE515D2261898FA0510' + '15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64' + 'ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7' + 'ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B' + 'F12FFA06D98A0864D87602733EC86A64521F2B18177B200C' + 'BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31' + '43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF';\nvar newPasswordRequiredChallengeUserAttributePrefix = 'userAttributes.';\n/** @class */\n\nvar AuthenticationHelper = /*#__PURE__*/function () {\n /**\n * Constructs a new AuthenticationHelper object\n * @param {string} PoolName Cognito user pool name.\n */\n function AuthenticationHelper(PoolName) {\n this.N = new BigInteger(initN, 16);\n this.g = new BigInteger('2', 16);\n this.k = new BigInteger(this.hexHash(\"00\" + this.N.toString(16) + \"0\" + this.g.toString(16)), 16);\n this.smallAValue = this.generateRandomSmallA();\n this.getLargeAValue(function () {});\n this.infoBits = Buffer.from('Caldera Derived Key', 'utf8');\n this.poolName = PoolName;\n }\n /**\n * @returns {BigInteger} small A, a random number\n */\n\n\n var _proto = AuthenticationHelper.prototype;\n\n _proto.getSmallAValue = function getSmallAValue() {\n return this.smallAValue;\n }\n /**\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n */\n ;\n\n _proto.getLargeAValue = function getLargeAValue(callback) {\n var _this = this;\n\n if (this.largeAValue) {\n callback(null, this.largeAValue);\n } else {\n this.calculateA(this.smallAValue, function (err, largeAValue) {\n if (err) {\n callback(err, null);\n }\n\n _this.largeAValue = largeAValue;\n callback(null, _this.largeAValue);\n });\n }\n }\n /**\n * helper function to generate a random big integer\n * @returns {BigInteger} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomSmallA = function generateRandomSmallA() {\n var hexRandom = randomBytes(128).toString('hex');\n var randomBigInt = new BigInteger(hexRandom, 16);\n var smallABigInt = randomBigInt.mod(this.N);\n return smallABigInt;\n }\n /**\n * helper function to generate a random string\n * @returns {string} a random value.\n * @private\n */\n ;\n\n _proto.generateRandomString = function generateRandomString() {\n return randomBytes(40).toString('base64');\n }\n /**\n * @returns {string} Generated random value included in password hash.\n */\n ;\n\n _proto.getRandomPassword = function getRandomPassword() {\n return this.randomPassword;\n }\n /**\n * @returns {string} Generated random value included in devices hash.\n */\n ;\n\n _proto.getSaltDevices = function getSaltDevices() {\n return this.SaltToHashDevices;\n }\n /**\n * @returns {string} Value used to verify devices.\n */\n ;\n\n _proto.getVerifierDevices = function getVerifierDevices() {\n return this.verifierDevices;\n }\n /**\n * Generate salts and compute verifier.\n * @param {string} deviceGroupKey Devices to generate verifier for.\n * @param {string} username User to generate verifier for.\n * @param {nodeCallback} callback Called with (err, null)\n * @returns {void}\n */\n ;\n\n _proto.generateHashDevice = function generateHashDevice(deviceGroupKey, username, callback) {\n var _this2 = this;\n\n this.randomPassword = this.generateRandomString();\n var combinedString = \"\" + deviceGroupKey + username + \":\" + this.randomPassword;\n var hashedString = this.hash(combinedString);\n var hexRandom = randomBytes(16).toString('hex');\n this.SaltToHashDevices = this.padHex(new BigInteger(hexRandom, 16));\n this.g.modPow(new BigInteger(this.hexHash(this.SaltToHashDevices + hashedString), 16), this.N, function (err, verifierDevicesNotPadded) {\n if (err) {\n callback(err, null);\n }\n\n _this2.verifierDevices = _this2.padHex(verifierDevicesNotPadded);\n callback(null, null);\n });\n }\n /**\n * Calculate the client's public value A = g^a%N\n * with the generated random number a\n * @param {BigInteger} a Randomly generated small A.\n * @param {nodeCallback} callback Called with (err, largeAValue)\n * @returns {void}\n * @private\n */\n ;\n\n _proto.calculateA = function calculateA(a, callback) {\n var _this3 = this;\n\n this.g.modPow(a, this.N, function (err, A) {\n if (err) {\n callback(err, null);\n }\n\n if (A.mod(_this3.N).equals(BigInteger.ZERO)) {\n callback(new Error('Illegal paramater. A mod N cannot be 0.'), null);\n }\n\n callback(null, A);\n });\n }\n /**\n * Calculate the client's value U which is the hash of A and B\n * @param {BigInteger} A Large A value.\n * @param {BigInteger} B Server B value.\n * @returns {BigInteger} Computed U value.\n * @private\n */\n ;\n\n _proto.calculateU = function calculateU(A, B) {\n this.UHexHash = this.hexHash(this.padHex(A) + this.padHex(B));\n var finalU = new BigInteger(this.UHexHash, 16);\n return finalU;\n }\n /**\n * Calculate a hash from a bitArray\n * @param {Buffer} buf Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hash = function hash(buf) {\n var str = buf instanceof Buffer ? CryptoJS.lib.WordArray.create(buf) : buf;\n var hashHex = SHA256(str).toString();\n return new Array(64 - hashHex.length).join('0') + hashHex;\n }\n /**\n * Calculate a hash from a hex string\n * @param {String} hexStr Value to hash.\n * @returns {String} Hex-encoded hash.\n * @private\n */\n ;\n\n _proto.hexHash = function hexHash(hexStr) {\n return this.hash(Buffer.from(hexStr, 'hex'));\n }\n /**\n * Standard hkdf algorithm\n * @param {Buffer} ikm Input key material.\n * @param {Buffer} salt Salt value.\n * @returns {Buffer} Strong key material.\n * @private\n */\n ;\n\n _proto.computehkdf = function computehkdf(ikm, salt) {\n var infoBitsWordArray = CryptoJS.lib.WordArray.create(Buffer.concat([this.infoBits, Buffer.from(String.fromCharCode(1), 'utf8')]));\n var ikmWordArray = ikm instanceof Buffer ? CryptoJS.lib.WordArray.create(ikm) : ikm;\n var saltWordArray = salt instanceof Buffer ? CryptoJS.lib.WordArray.create(salt) : salt;\n var prk = HmacSHA256(ikmWordArray, saltWordArray);\n var hmac = HmacSHA256(infoBitsWordArray, prk);\n return Buffer.from(hmac.toString(), 'hex').slice(0, 16);\n }\n /**\n * Calculates the final hkdf based on computed S value, and computed U value and the key\n * @param {String} username Username.\n * @param {String} password Password.\n * @param {BigInteger} serverBValue Server B value.\n * @param {BigInteger} salt Generated salt.\n * @param {nodeCallback} callback Called with (err, hkdfValue)\n * @returns {void}\n */\n ;\n\n _proto.getPasswordAuthenticationKey = function getPasswordAuthenticationKey(username, password, serverBValue, salt, callback) {\n var _this4 = this;\n\n if (serverBValue.mod(this.N).equals(BigInteger.ZERO)) {\n throw new Error('B cannot be zero.');\n }\n\n this.UValue = this.calculateU(this.largeAValue, serverBValue);\n\n if (this.UValue.equals(BigInteger.ZERO)) {\n throw new Error('U cannot be zero.');\n }\n\n var usernamePassword = \"\" + this.poolName + username + \":\" + password;\n var usernamePasswordHash = this.hash(usernamePassword);\n var xValue = new BigInteger(this.hexHash(this.padHex(salt) + usernamePasswordHash), 16);\n this.calculateS(xValue, serverBValue, function (err, sValue) {\n if (err) {\n callback(err, null);\n }\n\n var hkdf = _this4.computehkdf(Buffer.from(_this4.padHex(sValue), 'hex'), Buffer.from(_this4.padHex(_this4.UValue.toString(16)), 'hex'));\n\n callback(null, hkdf);\n });\n }\n /**\n * Calculates the S value used in getPasswordAuthenticationKey\n * @param {BigInteger} xValue Salted password hash value.\n * @param {BigInteger} serverBValue Server B value.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.calculateS = function calculateS(xValue, serverBValue, callback) {\n var _this5 = this;\n\n this.g.modPow(xValue, this.N, function (err, gModPowXN) {\n if (err) {\n callback(err, null);\n }\n\n var intValue2 = serverBValue.subtract(_this5.k.multiply(gModPowXN));\n intValue2.modPow(_this5.smallAValue.add(_this5.UValue.multiply(xValue)), _this5.N, function (err2, result) {\n if (err2) {\n callback(err2, null);\n }\n\n callback(null, result.mod(_this5.N));\n });\n });\n }\n /**\n * Return constant newPasswordRequiredChallengeUserAttributePrefix\n * @return {newPasswordRequiredChallengeUserAttributePrefix} constant prefix value\n */\n ;\n\n _proto.getNewPasswordRequiredChallengeUserAttributePrefix = function getNewPasswordRequiredChallengeUserAttributePrefix() {\n return newPasswordRequiredChallengeUserAttributePrefix;\n }\n /**\n * Converts a BigInteger (or hex string) to hex format padded with zeroes for hashing\n * @param {BigInteger|String} bigInt Number or string to pad.\n * @returns {String} Padded hex string.\n */\n ;\n\n _proto.padHex = function padHex(bigInt) {\n var hashStr = bigInt.toString(16);\n\n if (hashStr.length % 2 === 1) {\n hashStr = \"0\" + hashStr;\n } else if ('89ABCDEFabcdef'.indexOf(hashStr[0]) !== -1) {\n hashStr = \"00\" + hashStr;\n }\n\n return hashStr;\n };\n\n return AuthenticationHelper;\n}();\n\nexport { AuthenticationHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\n/** @class */\n\nvar CognitoJwtToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoJwtToken object\n * @param {string=} token The JWT token.\n */\n function CognitoJwtToken(token) {\n // Assign object\n this.jwtToken = token || '';\n this.payload = this.decodePayload();\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoJwtToken.prototype;\n\n _proto.getJwtToken = function getJwtToken() {\n return this.jwtToken;\n }\n /**\n * @returns {int} the token's expiration (exp member).\n */\n ;\n\n _proto.getExpiration = function getExpiration() {\n return this.payload.exp;\n }\n /**\n * @returns {int} the token's \"issued at\" (iat member).\n */\n ;\n\n _proto.getIssuedAt = function getIssuedAt() {\n return this.payload.iat;\n }\n /**\n * @returns {object} the token's payload.\n */\n ;\n\n _proto.decodePayload = function decodePayload() {\n var payload = this.jwtToken.split('.')[1];\n\n try {\n return JSON.parse(Buffer.from(payload, 'base64').toString('utf8'));\n } catch (err) {\n return {};\n }\n };\n\n return CognitoJwtToken;\n}();\n\nexport { CognitoJwtToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoAccessToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoAccessToken, _CognitoJwtToken);\n\n /**\n * Constructs a new CognitoAccessToken object\n * @param {string=} AccessToken The JWT access token.\n */\n function CognitoAccessToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n AccessToken = _ref.AccessToken;\n\n return _CognitoJwtToken.call(this, AccessToken || '') || this;\n }\n\n return CognitoAccessToken;\n}(CognitoJwtToken);\n\nexport { CognitoAccessToken as default };","function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport CognitoJwtToken from './CognitoJwtToken';\n/** @class */\n\nvar CognitoIdToken = /*#__PURE__*/function (_CognitoJwtToken) {\n _inheritsLoose(CognitoIdToken, _CognitoJwtToken);\n\n /**\n * Constructs a new CognitoIdToken object\n * @param {string=} IdToken The JWT Id token\n */\n function CognitoIdToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken;\n\n return _CognitoJwtToken.call(this, IdToken || '') || this;\n }\n\n return CognitoIdToken;\n}(CognitoJwtToken);\n\nexport { CognitoIdToken as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoRefreshToken = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoRefreshToken object\n * @param {string=} RefreshToken The JWT refresh token.\n */\n function CognitoRefreshToken(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n RefreshToken = _ref.RefreshToken;\n\n // Assign object\n this.token = RefreshToken || '';\n }\n /**\n * @returns {string} the record's token.\n */\n\n\n var _proto = CognitoRefreshToken.prototype;\n\n _proto.getToken = function getToken() {\n return this.token;\n };\n\n return CognitoRefreshToken;\n}();\n\nexport { CognitoRefreshToken as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoUserSession = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserSession object\n * @param {CognitoIdToken} IdToken The session's Id token.\n * @param {CognitoRefreshToken=} RefreshToken The session's refresh token.\n * @param {CognitoAccessToken} AccessToken The session's access token.\n * @param {int} ClockDrift The saved computer's clock drift or undefined to force calculation.\n */\n function CognitoUserSession(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n IdToken = _ref.IdToken,\n RefreshToken = _ref.RefreshToken,\n AccessToken = _ref.AccessToken,\n ClockDrift = _ref.ClockDrift;\n\n if (AccessToken == null || IdToken == null) {\n throw new Error('Id token and Access Token must be present.');\n }\n\n this.idToken = IdToken;\n this.refreshToken = RefreshToken;\n this.accessToken = AccessToken;\n this.clockDrift = ClockDrift === undefined ? this.calculateClockDrift() : ClockDrift;\n }\n /**\n * @returns {CognitoIdToken} the session's Id token\n */\n\n\n var _proto = CognitoUserSession.prototype;\n\n _proto.getIdToken = function getIdToken() {\n return this.idToken;\n }\n /**\n * @returns {CognitoRefreshToken} the session's refresh token\n */\n ;\n\n _proto.getRefreshToken = function getRefreshToken() {\n return this.refreshToken;\n }\n /**\n * @returns {CognitoAccessToken} the session's access token\n */\n ;\n\n _proto.getAccessToken = function getAccessToken() {\n return this.accessToken;\n }\n /**\n * @returns {int} the session's clock drift\n */\n ;\n\n _proto.getClockDrift = function getClockDrift() {\n return this.clockDrift;\n }\n /**\n * @returns {int} the computer's clock drift\n */\n ;\n\n _proto.calculateClockDrift = function calculateClockDrift() {\n var now = Math.floor(new Date() / 1000);\n var iat = Math.min(this.accessToken.getIssuedAt(), this.idToken.getIssuedAt());\n return now - iat;\n }\n /**\n * Checks to see if the session is still valid based on session expiry information found\n * in tokens and the current time (adjusted with clock drift)\n * @returns {boolean} if the session is still valid\n */\n ;\n\n _proto.isValid = function isValid() {\n var now = Math.floor(new Date() / 1000);\n var adjusted = now - this.clockDrift;\n return adjusted < this.accessToken.getExpiration() && adjusted < this.idToken.getExpiration();\n };\n\n return CognitoUserSession;\n}();\n\nexport { CognitoUserSession as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nvar monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nvar weekNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n/** @class */\n\nvar DateHelper = /*#__PURE__*/function () {\n function DateHelper() {}\n\n var _proto = DateHelper.prototype;\n\n /**\n * @returns {string} The current time in \"ddd MMM D HH:mm:ss UTC YYYY\" format.\n */\n _proto.getNowString = function getNowString() {\n var now = new Date();\n var weekDay = weekNames[now.getUTCDay()];\n var month = monthNames[now.getUTCMonth()];\n var day = now.getUTCDate();\n var hours = now.getUTCHours();\n\n if (hours < 10) {\n hours = \"0\" + hours;\n }\n\n var minutes = now.getUTCMinutes();\n\n if (minutes < 10) {\n minutes = \"0\" + minutes;\n }\n\n var seconds = now.getUTCSeconds();\n\n if (seconds < 10) {\n seconds = \"0\" + seconds;\n }\n\n var year = now.getUTCFullYear(); // ddd MMM D HH:mm:ss UTC YYYY\n\n var dateNow = weekDay + \" \" + month + \" \" + day + \" \" + hours + \":\" + minutes + \":\" + seconds + \" UTC \" + year;\n return dateNow;\n };\n\n return DateHelper;\n}();\n\nexport { DateHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @class */\nvar CognitoUserAttribute = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserAttribute object\n * @param {string=} Name The record's name\n * @param {string=} Value The record's value\n */\n function CognitoUserAttribute(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n Name = _ref.Name,\n Value = _ref.Value;\n\n this.Name = Name || '';\n this.Value = Value || '';\n }\n /**\n * @returns {string} the record's value.\n */\n\n\n var _proto = CognitoUserAttribute.prototype;\n\n _proto.getValue = function getValue() {\n return this.Value;\n }\n /**\n * Sets the record's value.\n * @param {string} value The new value.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setValue = function setValue(value) {\n this.Value = value;\n return this;\n }\n /**\n * @returns {string} the record's name.\n */\n ;\n\n _proto.getName = function getName() {\n return this.Name;\n }\n /**\n * Sets the record's name\n * @param {string} name The new name.\n * @returns {CognitoUserAttribute} The record for method chaining.\n */\n ;\n\n _proto.setName = function setName(name) {\n this.Name = name;\n return this;\n }\n /**\n * @returns {string} a string representation of the record.\n */\n ;\n\n _proto.toString = function toString() {\n return JSON.stringify(this);\n }\n /**\n * @returns {object} a flat object representing the record.\n */\n ;\n\n _proto.toJSON = function toJSON() {\n return {\n Name: this.Name,\n Value: this.Value\n };\n };\n\n return CognitoUserAttribute;\n}();\n\nexport { CognitoUserAttribute as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nvar dataMemory = {};\n/** @class */\n\nvar MemoryStorage = /*#__PURE__*/function () {\n function MemoryStorage() {}\n\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n MemoryStorage.setItem = function setItem(key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n MemoryStorage.getItem = function getItem(key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key) ? dataMemory[key] : undefined;\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n ;\n\n MemoryStorage.removeItem = function removeItem(key) {\n return delete dataMemory[key];\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n MemoryStorage.clear = function clear() {\n dataMemory = {};\n return dataMemory;\n };\n\n return MemoryStorage;\n}();\n/** @class */\n\n\nvar StorageHelper = /*#__PURE__*/function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.cognito.test-ls', 1);\n this.storageWindow.removeItem('aws.cognito.test-ls');\n } catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n\n\n var _proto = StorageHelper.prototype;\n\n _proto.getStorage = function getStorage() {\n return this.storageWindow;\n };\n\n return StorageHelper;\n}();\n\nexport { StorageHelper as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Buffer } from 'buffer';\nimport CryptoJS from 'crypto-js/core';\nimport TypedArrays from 'crypto-js/lib-typedarrays'; // necessary for crypto js\n\nimport Base64 from 'crypto-js/enc-base64';\nimport HmacSHA256 from 'crypto-js/hmac-sha256';\nimport BigInteger from './BigInteger';\nimport AuthenticationHelper from './AuthenticationHelper';\nimport CognitoAccessToken from './CognitoAccessToken';\nimport CognitoIdToken from './CognitoIdToken';\nimport CognitoRefreshToken from './CognitoRefreshToken';\nimport CognitoUserSession from './CognitoUserSession';\nimport DateHelper from './DateHelper';\nimport CognitoUserAttribute from './CognitoUserAttribute';\nimport StorageHelper from './StorageHelper';\n/**\n * @callback nodeCallback\n * @template T result\n * @param {*} err The operation failure reason, or null.\n * @param {T} result The operation result.\n */\n\n/**\n * @callback onFailure\n * @param {*} err Failure reason.\n */\n\n/**\n * @callback onSuccess\n * @template T result\n * @param {T} result The operation result.\n */\n\n/**\n * @callback mfaRequired\n * @param {*} details MFA challenge details.\n */\n\n/**\n * @callback customChallenge\n * @param {*} details Custom challenge details.\n */\n\n/**\n * @callback inputVerificationCode\n * @param {*} data Server response.\n */\n\n/**\n * @callback authSuccess\n * @param {CognitoUserSession} session The new session.\n * @param {bool=} userConfirmationNecessary User must be confirmed.\n */\n\nvar isBrowser = typeof navigator !== 'undefined';\nvar userAgent = isBrowser ? navigator.userAgent : 'nodejs';\n/** @class */\n\nvar CognitoUser = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUser object\n * @param {object} data Creation options\n * @param {string} data.Username The user's username.\n * @param {CognitoUserPool} data.Pool Pool containing the user.\n * @param {object} data.Storage Optional storage object.\n */\n function CognitoUser(data) {\n if (data == null || data.Username == null || data.Pool == null) {\n throw new Error('Username and pool information are required.');\n }\n\n this.username = data.Username || '';\n this.pool = data.Pool;\n this.Session = null;\n this.client = data.Pool.client;\n this.signInUserSession = null;\n this.authenticationFlowType = 'USER_SRP_AUTH';\n this.storage = data.Storage || new StorageHelper().getStorage();\n this.keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n this.userDataKey = this.keyPrefix + \".\" + this.username + \".userData\";\n }\n /**\n * Sets the session for this user\n * @param {CognitoUserSession} signInUserSession the session\n * @returns {void}\n */\n\n\n var _proto = CognitoUser.prototype;\n\n _proto.setSignInUserSession = function setSignInUserSession(signInUserSession) {\n this.clearCachedUserData();\n this.signInUserSession = signInUserSession;\n this.cacheTokens();\n }\n /**\n * @returns {CognitoUserSession} the current session for this user\n */\n ;\n\n _proto.getSignInUserSession = function getSignInUserSession() {\n return this.signInUserSession;\n }\n /**\n * @returns {string} the user's username\n */\n ;\n\n _proto.getUsername = function getUsername() {\n return this.username;\n }\n /**\n * @returns {String} the authentication flow type\n */\n ;\n\n _proto.getAuthenticationFlowType = function getAuthenticationFlowType() {\n return this.authenticationFlowType;\n }\n /**\n * sets authentication flow type\n * @param {string} authenticationFlowType New value.\n * @returns {void}\n */\n ;\n\n _proto.setAuthenticationFlowType = function setAuthenticationFlowType(authenticationFlowType) {\n this.authenticationFlowType = authenticationFlowType;\n }\n /**\n * This is used for authenticating the user through the custom authentication flow.\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.initiateAuth = function initiateAuth(authDetails, callback) {\n var _this = this;\n\n var authParameters = authDetails.getAuthParameters();\n authParameters.USERNAME = this.username;\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'CUSTOM_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = data.ChallengeName;\n var challengeParameters = data.ChallengeParameters;\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n _this.Session = data.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n _this.signInUserSession = _this.getCognitoUserSession(data.AuthenticationResult);\n\n _this.cacheTokens();\n\n return callback.onSuccess(_this.signInUserSession);\n });\n }\n /**\n * This is used for authenticating the user.\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUser = function authenticateUser(authDetails, callback) {\n if (this.authenticationFlowType === 'USER_PASSWORD_AUTH') {\n return this.authenticateUserPlainUsernamePassword(authDetails, callback);\n } else if (this.authenticationFlowType === 'USER_SRP_AUTH' || this.authenticationFlowType === 'CUSTOM_AUTH') {\n return this.authenticateUserDefaultAuth(authDetails, callback);\n }\n\n return callback.onFailure(new Error('Authentication flow type is invalid.'));\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * It calls the AuthenticationHelper for SRP related\n * stuff\n * @param {AuthenticationDetails} authDetails Contains the authentication data\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {newPasswordRequired} callback.newPasswordRequired new\n * password and any required attributes are required to continue\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserDefaultAuth = function authenticateUserDefaultAuth(authDetails, callback) {\n var _this2 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var dateHelper = new DateHelper();\n var serverBValue;\n var salt;\n var authParameters = {};\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n authParameters.USERNAME = this.username;\n authenticationHelper.getLargeAValue(function (errOnAValue, aValue) {\n // getLargeAValue callback start\n if (errOnAValue) {\n callback.onFailure(errOnAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n\n if (_this2.authenticationFlowType === 'CUSTOM_AUTH') {\n authParameters.CHALLENGE_NAME = 'SRP_A';\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: _this2.authenticationFlowType,\n ClientId: _this2.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData(_this2.username)) {\n jsonReq.UserContextData = _this2.getUserContextData(_this2.username);\n }\n\n _this2.client.request('InitiateAuth', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n _this2.username = challengeParameters.USER_ID_FOR_SRP;\n serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n salt = new BigInteger(challengeParameters.SALT, 16);\n\n _this2.getCachedDeviceKeyAndPassword();\n\n authenticationHelper.getPasswordAuthenticationKey(_this2.username, authDetails.getPassword(), serverBValue, salt, function (errOnHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errOnHkdf) {\n callback.onFailure(errOnHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this2.pool.getUserPoolId().split('_')[1], 'utf8'), Buffer.from(_this2.username, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this2.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n\n if (_this2.deviceKey != null) {\n challengeResponses.DEVICE_KEY = _this2.deviceKey;\n }\n\n var respondToAuthChallenge = function respondToAuthChallenge(challenge, challengeCallback) {\n return _this2.client.request('RespondToAuthChallenge', challenge, function (errChallenge, dataChallenge) {\n if (errChallenge && errChallenge.code === 'ResourceNotFoundException' && errChallenge.message.toLowerCase().indexOf('device') !== -1) {\n challengeResponses.DEVICE_KEY = null;\n _this2.deviceKey = null;\n _this2.randomPassword = null;\n _this2.deviceGroupKey = null;\n\n _this2.clearCachedDeviceKeyAndPassword();\n\n return respondToAuthChallenge(challenge, challengeCallback);\n }\n\n return challengeCallback(errChallenge, dataChallenge);\n });\n };\n\n var jsonReqResp = {\n ChallengeName: 'PASSWORD_VERIFIER',\n ClientId: _this2.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session,\n ClientMetadata: clientMetaData\n };\n\n if (_this2.getUserContextData()) {\n jsonReqResp.UserContextData = _this2.getUserContextData();\n }\n\n respondToAuthChallenge(jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this2.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {AuthenticationDetails} authDetails Contains the authentication data.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code\n * required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserPlainUsernamePassword = function authenticateUserPlainUsernamePassword(authDetails, callback) {\n var _this3 = this;\n\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.PASSWORD = authDetails.getPassword();\n\n if (!authParameters.PASSWORD) {\n callback.onFailure(new Error('PASSWORD parameter is required'));\n return;\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var clientMetaData = Object.keys(authDetails.getValidationData()).length !== 0 ? authDetails.getValidationData() : authDetails.getClientMetadata();\n var jsonReq = {\n AuthFlow: 'USER_PASSWORD_AUTH',\n ClientId: this.pool.getClientId(),\n AuthParameters: authParameters,\n ClientMetadata: clientMetaData\n };\n\n if (this.getUserContextData(this.username)) {\n jsonReq.UserContextData = this.getUserContextData(this.username);\n } // USER_PASSWORD_AUTH happens in a single round-trip: client sends userName and password,\n // Cognito UserPools verifies password and returns tokens.\n\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this3.authenticateUserInternal(authResult, authenticationHelper, callback);\n });\n }\n /**\n * PRIVATE ONLY: This is an internal only method and should not\n * be directly called by the consumers.\n * @param {object} dataAuthenticate authentication data\n * @param {object} authenticationHelper helper created\n * @param {callback} callback passed on from caller\n * @returns {void}\n */\n ;\n\n _proto.authenticateUserInternal = function authenticateUserInternal(dataAuthenticate, authenticationHelper, callback) {\n var _this4 = this;\n\n var challengeName = dataAuthenticate.ChallengeName;\n var challengeParameters = dataAuthenticate.ChallengeParameters;\n\n if (challengeName === 'SMS_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SELECT_MFA_TYPE') {\n this.Session = dataAuthenticate.Session;\n return callback.selectMFAType(challengeName, challengeParameters);\n }\n\n if (challengeName === 'MFA_SETUP') {\n this.Session = dataAuthenticate.Session;\n return callback.mfaSetup(challengeName, challengeParameters);\n }\n\n if (challengeName === 'SOFTWARE_TOKEN_MFA') {\n this.Session = dataAuthenticate.Session;\n return callback.totpRequired(challengeName, challengeParameters);\n }\n\n if (challengeName === 'CUSTOM_CHALLENGE') {\n this.Session = dataAuthenticate.Session;\n return callback.customChallenge(challengeParameters);\n }\n\n if (challengeName === 'NEW_PASSWORD_REQUIRED') {\n this.Session = dataAuthenticate.Session;\n var userAttributes = null;\n var rawRequiredAttributes = null;\n var requiredAttributes = [];\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n\n if (challengeParameters) {\n userAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.userAttributes);\n rawRequiredAttributes = JSON.parse(dataAuthenticate.ChallengeParameters.requiredAttributes);\n }\n\n if (rawRequiredAttributes) {\n for (var i = 0; i < rawRequiredAttributes.length; i++) {\n requiredAttributes[i] = rawRequiredAttributes[i].substr(userAttributesPrefix.length);\n }\n }\n\n return callback.newPasswordRequired(userAttributes, requiredAttributes);\n }\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n this.getDeviceResponse(callback);\n return undefined;\n }\n\n this.signInUserSession = this.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n this.challengeName = challengeName;\n this.cacheTokens();\n var newDeviceMetadata = dataAuthenticate.AuthenticationResult.NewDeviceMetadata;\n\n if (newDeviceMetadata == null) {\n return callback.onSuccess(this.signInUserSession);\n }\n\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this4.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this4.deviceGroupKey = newDeviceMetadata.DeviceGroupKey;\n _this4.randomPassword = authenticationHelper.getRandomPassword();\n\n _this4.client.request('ConfirmDevice', {\n DeviceKey: newDeviceMetadata.DeviceKey,\n AccessToken: _this4.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this4.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this4.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this4.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this4.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n }\n /**\n * This method is user to complete the NEW_PASSWORD_REQUIRED challenge.\n * Pass the new password with any new user attributes to be updated.\n * User attribute keys must be of format userAttributes..\n * @param {string} newPassword new password for this user\n * @param {object} requiredAttributeData map with values for all required attributes\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {mfaRequired} callback.mfaRequired MFA code required to continue.\n * @param {customChallenge} callback.customChallenge Custom challenge\n * response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.completeNewPasswordChallenge = function completeNewPasswordChallenge(newPassword, requiredAttributeData, callback, clientMetadata) {\n var _this5 = this;\n\n if (!newPassword) {\n return callback.onFailure(new Error('New password is required.'));\n }\n\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n var userAttributesPrefix = authenticationHelper.getNewPasswordRequiredChallengeUserAttributePrefix();\n var finalUserAttributes = {};\n\n if (requiredAttributeData) {\n Object.keys(requiredAttributeData).forEach(function (key) {\n finalUserAttributes[userAttributesPrefix + key] = requiredAttributeData[key];\n });\n }\n\n finalUserAttributes.NEW_PASSWORD = newPassword;\n finalUserAttributes.USERNAME = this.username;\n var jsonReq = {\n ChallengeName: 'NEW_PASSWORD_REQUIRED',\n ClientId: this.pool.getClientId(),\n ChallengeResponses: finalUserAttributes,\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n return _this5.authenticateUserInternal(dataAuthenticate, authenticationHelper, callback);\n });\n return undefined;\n }\n /**\n * This is used to get a session using device authentication. It is called at the end of user\n * authentication\n *\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n * @private\n */\n ;\n\n _proto.getDeviceResponse = function getDeviceResponse(callback, clientMetadata) {\n var _this6 = this;\n\n var authenticationHelper = new AuthenticationHelper(this.deviceGroupKey);\n var dateHelper = new DateHelper();\n var authParameters = {};\n authParameters.USERNAME = this.username;\n authParameters.DEVICE_KEY = this.deviceKey;\n authenticationHelper.getLargeAValue(function (errAValue, aValue) {\n // getLargeAValue callback start\n if (errAValue) {\n callback.onFailure(errAValue);\n }\n\n authParameters.SRP_A = aValue.toString(16);\n var jsonReq = {\n ChallengeName: 'DEVICE_SRP_AUTH',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (_this6.getUserContextData()) {\n jsonReq.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeParameters = data.ChallengeParameters;\n var serverBValue = new BigInteger(challengeParameters.SRP_B, 16);\n var salt = new BigInteger(challengeParameters.SALT, 16);\n authenticationHelper.getPasswordAuthenticationKey(_this6.deviceKey, _this6.randomPassword, serverBValue, salt, function (errHkdf, hkdf) {\n // getPasswordAuthenticationKey callback start\n if (errHkdf) {\n return callback.onFailure(errHkdf);\n }\n\n var dateNow = dateHelper.getNowString();\n var message = CryptoJS.lib.WordArray.create(Buffer.concat([Buffer.from(_this6.deviceGroupKey, 'utf8'), Buffer.from(_this6.deviceKey, 'utf8'), Buffer.from(challengeParameters.SECRET_BLOCK, 'base64'), Buffer.from(dateNow, 'utf8')]));\n var key = CryptoJS.lib.WordArray.create(hkdf);\n var signatureString = Base64.stringify(HmacSHA256(message, key));\n var challengeResponses = {};\n challengeResponses.USERNAME = _this6.username;\n challengeResponses.PASSWORD_CLAIM_SECRET_BLOCK = challengeParameters.SECRET_BLOCK;\n challengeResponses.TIMESTAMP = dateNow;\n challengeResponses.PASSWORD_CLAIM_SIGNATURE = signatureString;\n challengeResponses.DEVICE_KEY = _this6.deviceKey;\n var jsonReqResp = {\n ChallengeName: 'DEVICE_PASSWORD_VERIFIER',\n ClientId: _this6.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: data.Session\n };\n\n if (_this6.getUserContextData()) {\n jsonReqResp.UserContextData = _this6.getUserContextData();\n }\n\n _this6.client.request('RespondToAuthChallenge', jsonReqResp, function (errAuthenticate, dataAuthenticate) {\n if (errAuthenticate) {\n return callback.onFailure(errAuthenticate);\n }\n\n _this6.signInUserSession = _this6.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this6.cacheTokens();\n\n return callback.onSuccess(_this6.signInUserSession);\n });\n\n return undefined; // getPasswordAuthenticationKey callback end\n });\n return undefined;\n }); // getLargeAValue callback end\n\n });\n }\n /**\n * This is used for a certain user to confirm the registration by using a confirmation code\n * @param {string} confirmationCode Code entered by user.\n * @param {bool} forceAliasCreation Allow migrating from an existing email / phone number.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmRegistration = function confirmRegistration(confirmationCode, forceAliasCreation, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n ConfirmationCode: confirmationCode,\n Username: this.username,\n ForceAliasCreation: forceAliasCreation,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmSignUp', jsonReq, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n }\n /**\n * This is used by the user once he has the responses to a custom challenge\n * @param {string} answerChallenge The custom challenge answer.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {customChallenge} callback.customChallenge\n * Custom challenge response required to continue.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendCustomChallengeAnswer = function sendCustomChallengeAnswer(answerChallenge, callback, clientMetadata) {\n var _this7 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var authenticationHelper = new AuthenticationHelper(this.pool.getUserPoolId().split('_')[1]);\n this.getCachedDeviceKeyAndPassword();\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: 'CUSTOM_CHALLENGE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return _this7.authenticateUserInternal(data, authenticationHelper, callback);\n });\n }\n /**\n * This is used by the user once he has an MFA code\n * @param {string} confirmationCode The MFA code entered by the user.\n * @param {object} callback Result callback map.\n * @param {string} mfaType The mfa we are replying to.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {authSuccess} callback.onSuccess Called on success with the new session.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.sendMFACode = function sendMFACode(confirmationCode, callback, mfaType, clientMetadata) {\n var _this8 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.SMS_MFA_CODE = confirmationCode;\n var mfaTypeSelection = mfaType || 'SMS_MFA';\n\n if (mfaTypeSelection === 'SOFTWARE_TOKEN_MFA') {\n challengeResponses.SOFTWARE_TOKEN_MFA_CODE = confirmationCode;\n }\n\n if (this.deviceKey != null) {\n challengeResponses.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ChallengeName: mfaTypeSelection,\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, dataAuthenticate) {\n if (err) {\n return callback.onFailure(err);\n }\n\n var challengeName = dataAuthenticate.ChallengeName;\n\n if (challengeName === 'DEVICE_SRP_AUTH') {\n _this8.getDeviceResponse(callback);\n\n return undefined;\n }\n\n _this8.signInUserSession = _this8.getCognitoUserSession(dataAuthenticate.AuthenticationResult);\n\n _this8.cacheTokens();\n\n if (dataAuthenticate.AuthenticationResult.NewDeviceMetadata == null) {\n return callback.onSuccess(_this8.signInUserSession);\n }\n\n var authenticationHelper = new AuthenticationHelper(_this8.pool.getUserPoolId().split('_')[1]);\n authenticationHelper.generateHashDevice(dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey, dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey, function (errGenHash) {\n if (errGenHash) {\n return callback.onFailure(errGenHash);\n }\n\n var deviceSecretVerifierConfig = {\n Salt: Buffer.from(authenticationHelper.getSaltDevices(), 'hex').toString('base64'),\n PasswordVerifier: Buffer.from(authenticationHelper.getVerifierDevices(), 'hex').toString('base64')\n };\n _this8.verifierDevices = deviceSecretVerifierConfig.PasswordVerifier;\n _this8.deviceGroupKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceGroupKey;\n _this8.randomPassword = authenticationHelper.getRandomPassword();\n\n _this8.client.request('ConfirmDevice', {\n DeviceKey: dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey,\n AccessToken: _this8.signInUserSession.getAccessToken().getJwtToken(),\n DeviceSecretVerifierConfig: deviceSecretVerifierConfig,\n DeviceName: userAgent\n }, function (errConfirm, dataConfirm) {\n if (errConfirm) {\n return callback.onFailure(errConfirm);\n }\n\n _this8.deviceKey = dataAuthenticate.AuthenticationResult.NewDeviceMetadata.DeviceKey;\n\n _this8.cacheDeviceKeyAndPassword();\n\n if (dataConfirm.UserConfirmationNecessary === true) {\n return callback.onSuccess(_this8.signInUserSession, dataConfirm.UserConfirmationNecessary);\n }\n\n return callback.onSuccess(_this8.signInUserSession);\n });\n\n return undefined;\n });\n return undefined;\n });\n }\n /**\n * This is used by an authenticated user to change the current password\n * @param {string} oldUserPassword The current password.\n * @param {string} newUserPassword The requested new password.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.changePassword = function changePassword(oldUserPassword, newUserPassword, callback, clientMetadata) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('ChangePassword', {\n PreviousPassword: oldUserPassword,\n ProposedPassword: newUserPassword,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.enableMFA = function enableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n var mfaEnabled = {\n DeliveryMedium: 'SMS',\n AttributeName: 'phone_number'\n };\n mfaOptions.push(mfaEnabled);\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to enable MFA for itself\n * @param {IMfaSettings} smsMfaSettings the sms mfa settings\n * @param {IMFASettings} softwareTokenMfaSettings the software token mfa settings\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.setUserMfaPreference = function setUserMfaPreference(smsMfaSettings, softwareTokenMfaSettings, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('SetUserMFAPreference', {\n SMSMfaSettings: smsMfaSettings,\n SoftwareTokenMfaSettings: softwareTokenMfaSettings,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to disable MFA for itself\n * @deprecated\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.disableMFA = function disableMFA(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n var mfaOptions = [];\n this.client.request('SetUserSettings', {\n MFAOptions: mfaOptions,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to delete itself\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.deleteUser = function deleteUser(callback, clientMetadata) {\n var _this9 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n _this9.clearCachedUser();\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * @typedef {CognitoUserAttribute | { Name:string, Value:string }} AttributeArg\n */\n\n /**\n * This is used by an authenticated user to change a list of attributes\n * @param {AttributeArg[]} attributes A list of the new user attributes.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.updateAttributes = function updateAttributes(attributes, callback, clientMetadata) {\n var _this10 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('UpdateUserAttributes', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserAttributes: attributes,\n ClientMetadata: clientMetadata\n }, function (err) {\n if (err) {\n return callback(err, null);\n } // update cached user\n\n\n return _this10.getUserData(function () {\n return callback(null, 'SUCCESS');\n }, {\n bypassCache: true\n });\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get a list of attributes\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getUserAttributes = function getUserAttributes(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n var attributeList = [];\n\n for (var i = 0; i < userData.UserAttributes.length; i++) {\n var attribute = {\n Name: userData.UserAttributes[i].Name,\n Value: userData.UserAttributes[i].Value\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n\n return callback(null, attributeList);\n });\n return undefined;\n }\n /**\n * This is used by an authenticated user to get the MFAOptions\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getMFAOptions = function getMFAOptions(callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, userData) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, userData.MFAOptions);\n });\n return undefined;\n }\n /**\n * This is used by an authenticated users to get the userData\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getUserData = function getUserData(callback, params) {\n var _this11 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.clearCachedUserData();\n return callback(new Error('User is not authenticated'), null);\n }\n\n var bypassCache = params ? params.bypassCache : false;\n var userData = this.storage.getItem(this.userDataKey); // get the cached user data\n\n if (!userData || bypassCache) {\n this.client.request('GetUser', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, latestUserData) {\n if (err) {\n return callback(err, null);\n }\n\n _this11.cacheUserData(latestUserData);\n\n var refresh = _this11.signInUserSession.getRefreshToken();\n\n if (refresh && refresh.getToken()) {\n _this11.refreshSession(refresh, function (refreshError, data) {\n if (refreshError) {\n return callback(refreshError, null);\n }\n\n return callback(null, latestUserData);\n });\n } else {\n return callback(null, latestUserData);\n }\n });\n } else {\n try {\n return callback(null, JSON.parse(userData));\n } catch (err) {\n this.clearCachedUserData();\n return callback(err, null);\n }\n }\n\n return undefined;\n }\n /**\n * This is used by an authenticated user to delete a list of attributes\n * @param {string[]} attributeList Names of the attributes to delete.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.deleteAttributes = function deleteAttributes(attributeList, callback) {\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n return callback(new Error('User is not authenticated'), null);\n }\n\n this.client.request('DeleteUserAttributes', {\n UserAttributeNames: attributeList,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, 'SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used by a user to resend a confirmation code\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.resendConfirmationCode = function resendConfirmationCode(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n this.client.request('ResendConfirmationCode', jsonReq, function (err, result) {\n if (err) {\n return callback(err, null);\n }\n\n return callback(null, result);\n });\n }\n /**\n * This is used to get a session, either from the session object\n * or from the local storage, or by using a refresh token\n *\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.getSession = function getSession(callback) {\n if (this.username == null) {\n return callback(new Error('Username is null. Cannot retrieve a new session'), null);\n }\n\n if (this.signInUserSession != null && this.signInUserSession.isValid()) {\n return callback(null, this.signInUserSession);\n }\n\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var idTokenKey = keyPrefix + \".idToken\";\n var accessTokenKey = keyPrefix + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".clockDrift\";\n\n if (this.storage.getItem(idTokenKey)) {\n var idToken = new CognitoIdToken({\n IdToken: this.storage.getItem(idTokenKey)\n });\n var accessToken = new CognitoAccessToken({\n AccessToken: this.storage.getItem(accessTokenKey)\n });\n var refreshToken = new CognitoRefreshToken({\n RefreshToken: this.storage.getItem(refreshTokenKey)\n });\n var clockDrift = parseInt(this.storage.getItem(clockDriftKey), 0) || 0;\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken,\n ClockDrift: clockDrift\n };\n var cachedSession = new CognitoUserSession(sessionData);\n\n if (cachedSession.isValid()) {\n this.signInUserSession = cachedSession;\n return callback(null, this.signInUserSession);\n }\n\n if (!refreshToken.getToken()) {\n return callback(new Error('Cannot retrieve a new session. Please authenticate.'), null);\n }\n\n this.refreshSession(refreshToken, callback);\n } else {\n callback(new Error('Local storage is missing an ID Token, Please authenticate'), null);\n }\n\n return undefined;\n }\n /**\n * This uses the refreshToken to retrieve a new session\n * @param {CognitoRefreshToken} refreshToken A previous session's refresh token.\n * @param {nodeCallback} callback Called on success or error.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.refreshSession = function refreshSession(refreshToken, callback, clientMetadata) {\n var _this12 = this;\n\n var authParameters = {};\n authParameters.REFRESH_TOKEN = refreshToken.getToken();\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n\n if (this.storage.getItem(lastUserKey)) {\n this.username = this.storage.getItem(lastUserKey);\n var deviceKeyKey = keyPrefix + \".\" + this.username + \".deviceKey\";\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n authParameters.DEVICE_KEY = this.deviceKey;\n }\n\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n AuthFlow: 'REFRESH_TOKEN_AUTH',\n AuthParameters: authParameters,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('InitiateAuth', jsonReq, function (err, authResult) {\n if (err) {\n if (err.code === 'NotAuthorizedException') {\n _this12.clearCachedUser();\n }\n\n return callback(err, null);\n }\n\n if (authResult) {\n var authenticationResult = authResult.AuthenticationResult;\n\n if (!Object.prototype.hasOwnProperty.call(authenticationResult, 'RefreshToken')) {\n authenticationResult.RefreshToken = refreshToken.getToken();\n }\n\n _this12.signInUserSession = _this12.getCognitoUserSession(authenticationResult);\n\n _this12.cacheTokens();\n\n return callback(null, _this12.signInUserSession);\n }\n\n return undefined;\n });\n }\n /**\n * This is used to save the session tokens to local storage\n * @returns {void}\n */\n ;\n\n _proto.cacheTokens = function cacheTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n this.storage.setItem(idTokenKey, this.signInUserSession.getIdToken().getJwtToken());\n this.storage.setItem(accessTokenKey, this.signInUserSession.getAccessToken().getJwtToken());\n this.storage.setItem(refreshTokenKey, this.signInUserSession.getRefreshToken().getToken());\n this.storage.setItem(clockDriftKey, \"\" + this.signInUserSession.getClockDrift());\n this.storage.setItem(lastUserKey, this.username);\n }\n /**\n * This is to cache user data\n */\n ;\n\n _proto.cacheUserData = function cacheUserData(userData) {\n this.storage.setItem(this.userDataKey, JSON.stringify(userData));\n }\n /**\n * This is to remove cached user data\n */\n ;\n\n _proto.clearCachedUserData = function clearCachedUserData() {\n this.storage.removeItem(this.userDataKey);\n };\n\n _proto.clearCachedUser = function clearCachedUser() {\n this.clearCachedTokens();\n this.clearCachedUserData();\n }\n /**\n * This is used to cache the device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.cacheDeviceKeyAndPassword = function cacheDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.setItem(deviceKeyKey, this.deviceKey);\n this.storage.setItem(randomPasswordKey, this.randomPassword);\n this.storage.setItem(deviceGroupKeyKey, this.deviceGroupKey);\n }\n /**\n * This is used to get current device key and device group and device password\n * @returns {void}\n */\n ;\n\n _proto.getCachedDeviceKeyAndPassword = function getCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n\n if (this.storage.getItem(deviceKeyKey)) {\n this.deviceKey = this.storage.getItem(deviceKeyKey);\n this.randomPassword = this.storage.getItem(randomPasswordKey);\n this.deviceGroupKey = this.storage.getItem(deviceGroupKeyKey);\n }\n }\n /**\n * This is used to clear the device key info from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedDeviceKeyAndPassword = function clearCachedDeviceKeyAndPassword() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId() + \".\" + this.username;\n var deviceKeyKey = keyPrefix + \".deviceKey\";\n var randomPasswordKey = keyPrefix + \".randomPasswordKey\";\n var deviceGroupKeyKey = keyPrefix + \".deviceGroupKey\";\n this.storage.removeItem(deviceKeyKey);\n this.storage.removeItem(randomPasswordKey);\n this.storage.removeItem(deviceGroupKeyKey);\n }\n /**\n * This is used to clear the session tokens from local storage\n * @returns {void}\n */\n ;\n\n _proto.clearCachedTokens = function clearCachedTokens() {\n var keyPrefix = \"CognitoIdentityServiceProvider.\" + this.pool.getClientId();\n var idTokenKey = keyPrefix + \".\" + this.username + \".idToken\";\n var accessTokenKey = keyPrefix + \".\" + this.username + \".accessToken\";\n var refreshTokenKey = keyPrefix + \".\" + this.username + \".refreshToken\";\n var lastUserKey = keyPrefix + \".LastAuthUser\";\n var clockDriftKey = keyPrefix + \".\" + this.username + \".clockDrift\";\n this.storage.removeItem(idTokenKey);\n this.storage.removeItem(accessTokenKey);\n this.storage.removeItem(refreshTokenKey);\n this.storage.removeItem(lastUserKey);\n this.storage.removeItem(clockDriftKey);\n }\n /**\n * This is used to build a user session from tokens retrieved in the authentication result\n * @param {object} authResult Successful auth response from server.\n * @returns {CognitoUserSession} The new user session.\n * @private\n */\n ;\n\n _proto.getCognitoUserSession = function getCognitoUserSession(authResult) {\n var idToken = new CognitoIdToken(authResult);\n var accessToken = new CognitoAccessToken(authResult);\n var refreshToken = new CognitoRefreshToken(authResult);\n var sessionData = {\n IdToken: idToken,\n AccessToken: accessToken,\n RefreshToken: refreshToken\n };\n return new CognitoUserSession(sessionData);\n }\n /**\n * This is used to initiate a forgot password request\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode?} callback.inputVerificationCode\n * Optional callback raised instead of onSuccess with response data.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.forgotPassword = function forgotPassword(callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ForgotPassword', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess(data);\n });\n }\n /**\n * This is used to confirm a new password using a confirmationCode\n * @param {string} confirmationCode Code entered by user.\n * @param {string} newPassword Confirm new password.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.confirmPassword = function confirmPassword(confirmationCode, newPassword, callback, clientMetadata) {\n var jsonReq = {\n ClientId: this.pool.getClientId(),\n Username: this.username,\n ConfirmationCode: confirmationCode,\n Password: newPassword,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('ConfirmForgotPassword', jsonReq, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess();\n });\n }\n /**\n * This is used to initiate an attribute confirmation request\n * @param {string} attributeName User attribute that needs confirmation.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {inputVerificationCode} callback.inputVerificationCode Called on success.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.getAttributeVerificationCode = function getAttributeVerificationCode(attributeName, callback, clientMetadata) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetUserAttributeVerificationCode', {\n AttributeName: attributeName,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n ClientMetadata: clientMetadata\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n if (typeof callback.inputVerificationCode === 'function') {\n return callback.inputVerificationCode(data);\n }\n\n return callback.onSuccess();\n });\n return undefined;\n }\n /**\n * This is used to confirm an attribute using a confirmation code\n * @param {string} attributeName Attribute being confirmed.\n * @param {string} confirmationCode Code entered by user.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.verifyAttribute = function verifyAttribute(attributeName, confirmationCode, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('VerifyUserAttribute', {\n AttributeName: attributeName,\n Code: confirmationCode,\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to get the device information using the current device key\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device data.\n * @returns {void}\n */\n ;\n\n _proto.getDevice = function getDevice(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to forget a specific device\n * @param {string} deviceKey Device key.\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetSpecificDevice = function forgetSpecificDevice(deviceKey, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('ForgetDevice', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: deviceKey\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to forget the current device\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.forgetDevice = function forgetDevice(callback) {\n var _this13 = this;\n\n this.forgetSpecificDevice(this.deviceKey, {\n onFailure: callback.onFailure,\n onSuccess: function onSuccess(result) {\n _this13.deviceKey = null;\n _this13.deviceGroupKey = null;\n _this13.randomPassword = null;\n\n _this13.clearCachedDeviceKeyAndPassword();\n\n return callback.onSuccess(result);\n }\n });\n }\n /**\n * This is used to set the device status as remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusRemembered = function setDeviceStatusRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to set the device status as not remembered\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.setDeviceStatusNotRemembered = function setDeviceStatusNotRemembered(callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('UpdateDeviceStatus', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n DeviceKey: this.deviceKey,\n DeviceRememberedStatus: 'not_remembered'\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used to list all devices for a user\n *\n * @param {int} limit the number of devices returned in a call\n * @param {string} paginationToken the pagination token in case any was returned before\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess<*>} callback.onSuccess Called on success with device list.\n * @returns {void}\n */\n ;\n\n _proto.listDevices = function listDevices(limit, paginationToken, callback) {\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('ListDevices', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n Limit: limit,\n PaginationToken: paginationToken\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n return undefined;\n }\n /**\n * This is used to globally revoke all tokens issued to a user\n * @param {object} callback Result callback map.\n * @param {onFailure} callback.onFailure Called on any error.\n * @param {onSuccess} callback.onSuccess Called on success.\n * @returns {void}\n */\n ;\n\n _proto.globalSignOut = function globalSignOut(callback) {\n var _this14 = this;\n\n if (this.signInUserSession == null || !this.signInUserSession.isValid()) {\n return callback.onFailure(new Error('User is not authenticated'));\n }\n\n this.client.request('GlobalSignOut', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this14.clearCachedUser();\n\n return callback.onSuccess('SUCCESS');\n });\n return undefined;\n }\n /**\n * This is used for the user to signOut of the application and clear the cached tokens.\n * @returns {void}\n */\n ;\n\n _proto.signOut = function signOut() {\n this.signInUserSession = null;\n this.clearCachedUser();\n }\n /**\n * This is used by a user trying to select a given MFA\n * @param {string} answerChallenge the mfa the user wants\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.sendMFASelectionAnswer = function sendMFASelectionAnswer(answerChallenge, callback) {\n var _this15 = this;\n\n var challengeResponses = {};\n challengeResponses.USERNAME = this.username;\n challengeResponses.ANSWER = answerChallenge;\n var jsonReq = {\n ChallengeName: 'SELECT_MFA_TYPE',\n ChallengeResponses: challengeResponses,\n ClientId: this.pool.getClientId(),\n Session: this.Session\n };\n\n if (this.getUserContextData()) {\n jsonReq.UserContextData = this.getUserContextData();\n }\n\n this.client.request('RespondToAuthChallenge', jsonReq, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this15.Session = data.Session;\n\n if (answerChallenge === 'SMS_MFA') {\n return callback.mfaRequired(data.challengeName, data.challengeParameters);\n }\n\n if (answerChallenge === 'SOFTWARE_TOKEN_MFA') {\n return callback.totpRequired(data.challengeName, data.challengeParameters);\n }\n\n return undefined;\n });\n }\n /**\n * This returns the user context data for advanced security feature.\n * @returns {void}\n */\n ;\n\n _proto.getUserContextData = function getUserContextData() {\n var pool = this.pool;\n return pool.getUserContextData(this.username);\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to associate a TOTP MFA\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.associateSoftwareToken = function associateSoftwareToken(callback) {\n var _this16 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('AssociateSoftwareToken', {\n Session: this.Session\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this16.Session = data.Session;\n return callback.associateSecretCode(data.SecretCode);\n });\n } else {\n this.client.request('AssociateSoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken()\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.associateSecretCode(data.SecretCode);\n });\n }\n }\n /**\n * This is used by an authenticated or a user trying to authenticate to verify a TOTP MFA\n * @param {string} totpCode The MFA code entered by the user.\n * @param {string} friendlyDeviceName The device name we are assigning to the device.\n * @param {nodeCallback} callback Called on success or error.\n * @returns {void}\n */\n ;\n\n _proto.verifySoftwareToken = function verifySoftwareToken(totpCode, friendlyDeviceName, callback) {\n var _this17 = this;\n\n if (!(this.signInUserSession != null && this.signInUserSession.isValid())) {\n this.client.request('VerifySoftwareToken', {\n Session: this.Session,\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n _this17.Session = data.Session;\n var challengeResponses = {};\n challengeResponses.USERNAME = _this17.username;\n var jsonReq = {\n ChallengeName: 'MFA_SETUP',\n ClientId: _this17.pool.getClientId(),\n ChallengeResponses: challengeResponses,\n Session: _this17.Session\n };\n\n if (_this17.getUserContextData()) {\n jsonReq.UserContextData = _this17.getUserContextData();\n }\n\n _this17.client.request('RespondToAuthChallenge', jsonReq, function (errRespond, dataRespond) {\n if (errRespond) {\n return callback.onFailure(errRespond);\n }\n\n _this17.signInUserSession = _this17.getCognitoUserSession(dataRespond.AuthenticationResult);\n\n _this17.cacheTokens();\n\n return callback.onSuccess(_this17.signInUserSession);\n });\n\n return undefined;\n });\n } else {\n this.client.request('VerifySoftwareToken', {\n AccessToken: this.signInUserSession.getAccessToken().getJwtToken(),\n UserCode: totpCode,\n FriendlyDeviceName: friendlyDeviceName\n }, function (err, data) {\n if (err) {\n return callback.onFailure(err);\n }\n\n return callback.onSuccess(data);\n });\n }\n };\n\n return CognitoUser;\n}();\n\nexport { CognitoUser as default };","// constructor\nfunction UserAgent() {} // public\n\n\nUserAgent.prototype.userAgent = 'aws-amplify/0.1.x js';\nexport var appendToCognitoUserAgent = function appendToCognitoUserAgent(content) {\n if (!content) {\n return;\n }\n\n if (UserAgent.prototype.userAgent && !UserAgent.prototype.userAgent.includes(content)) {\n UserAgent.prototype.userAgent = UserAgent.prototype.userAgent.concat(' ', content);\n }\n\n if (!UserAgent.prototype.userAgent || UserAgent.prototype.userAgent === '') {\n UserAgent.prototype.userAgent = content;\n }\n}; // class for defining the amzn user-agent\n\nexport default UserAgent;","import UserAgent from './UserAgent';\n/** @class */\n\nvar Client = /*#__PURE__*/function () {\n /**\n * Constructs a new AWS Cognito Identity Provider client object\n * @param {string} region AWS region\n * @param {string} endpoint endpoint\n */\n function Client(region, endpoint) {\n this.endpoint = endpoint || \"https://cognito-idp.\" + region + \".amazonaws.com/\";\n }\n /**\n * Makes an unauthenticated request on AWS Cognito Identity Provider API\n * using fetch\n * @param {string} operation API operation\n * @param {object} params Input parameters\n * @param {function} callback Callback called when a response is returned\n * @returns {void}\n */\n\n\n var _proto = Client.prototype;\n\n _proto.request = function request(operation, params, callback) {\n var headers = {\n 'Content-Type': 'application/x-amz-json-1.1',\n 'X-Amz-Target': \"AWSCognitoIdentityProviderService.\" + operation,\n 'X-Amz-User-Agent': UserAgent.prototype.userAgent\n };\n var options = {\n headers: headers,\n method: 'POST',\n mode: 'cors',\n cache: 'no-cache',\n body: JSON.stringify(params)\n };\n var response;\n var responseJsonData;\n fetch(this.endpoint, options).then(function (resp) {\n response = resp;\n return resp;\n }, function (err) {\n // If error happens here, the request failed\n // if it is TypeError throw network error\n if (err instanceof TypeError) {\n throw new Error('Network error');\n }\n\n throw err;\n }).then(function (resp) {\n return resp.json()[\"catch\"](function () {\n return {};\n });\n }).then(function (data) {\n // return parsed body stream\n if (response.ok) return callback(null, data);\n responseJsonData = data; // Taken from aws-sdk-js/lib/protocol/json.js\n // eslint-disable-next-line no-underscore-dangle\n\n var code = (data.__type || data.code).split('#').pop();\n var error = {\n code: code,\n name: code,\n message: data.message || data.Message || null\n };\n return callback(error);\n })[\"catch\"](function (err) {\n // first check if we have a service error\n if (response && response.headers && response.headers.get('x-amzn-errortype')) {\n try {\n var code = response.headers.get('x-amzn-errortype').split(':')[0];\n var error = {\n code: code,\n name: code,\n statusCode: response.status,\n message: response.status ? response.status.toString() : null\n };\n return callback(error);\n } catch (ex) {\n return callback(err);\n } // otherwise check if error is Network error\n\n } else if (err instanceof Error && err.message === 'Network error') {\n var _error = {\n code: 'NetworkError',\n name: err.name,\n message: err.message\n };\n return callback(_error);\n } else {\n return callback(err);\n }\n });\n };\n\n return Client;\n}();\n\nexport { Client as default };","/*!\n * Copyright 2016 Amazon.com,\n * Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Amazon Software License (the \"License\").\n * You may not use this file except in compliance with the\n * License. A copy of the License is located at\n *\n * http://aws.amazon.com/asl/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, express or implied. See the License\n * for the specific language governing permissions and\n * limitations under the License.\n */\nimport Client from './Client';\nimport CognitoUser from './CognitoUser';\nimport StorageHelper from './StorageHelper';\n/** @class */\n\nvar CognitoUserPool = /*#__PURE__*/function () {\n /**\n * Constructs a new CognitoUserPool object\n * @param {object} data Creation options.\n * @param {string} data.UserPoolId Cognito user pool id.\n * @param {string} data.ClientId User pool application client id.\n * @param {object} data.Storage Optional storage object.\n * @param {boolean} data.AdvancedSecurityDataCollectionFlag Optional:\n * boolean flag indicating if the data collection is enabled\n * to support cognito advanced security features. By default, this\n * flag is set to true.\n */\n function CognitoUserPool(data) {\n var _ref = data || {},\n UserPoolId = _ref.UserPoolId,\n ClientId = _ref.ClientId,\n endpoint = _ref.endpoint,\n AdvancedSecurityDataCollectionFlag = _ref.AdvancedSecurityDataCollectionFlag;\n\n if (!UserPoolId || !ClientId) {\n throw new Error('Both UserPoolId and ClientId are required.');\n }\n\n if (!/^[\\w-]+_.+$/.test(UserPoolId)) {\n throw new Error('Invalid UserPoolId format.');\n }\n\n var region = UserPoolId.split('_')[0];\n this.userPoolId = UserPoolId;\n this.clientId = ClientId;\n this.client = new Client(region, endpoint);\n /**\n * By default, AdvancedSecurityDataCollectionFlag is set to true,\n * if no input value is provided.\n */\n\n this.advancedSecurityDataCollectionFlag = AdvancedSecurityDataCollectionFlag !== false;\n this.storage = data.Storage || new StorageHelper().getStorage();\n }\n /**\n * @returns {string} the user pool id\n */\n\n\n var _proto = CognitoUserPool.prototype;\n\n _proto.getUserPoolId = function getUserPoolId() {\n return this.userPoolId;\n }\n /**\n * @returns {string} the client id\n */\n ;\n\n _proto.getClientId = function getClientId() {\n return this.clientId;\n }\n /**\n * @typedef {object} SignUpResult\n * @property {CognitoUser} user New user.\n * @property {bool} userConfirmed If the user is already confirmed.\n */\n\n /**\n * method for signing up a user\n * @param {string} username User's username.\n * @param {string} password Plain-text initial password entered by user.\n * @param {(AttributeArg[])=} userAttributes New user attributes.\n * @param {(AttributeArg[])=} validationData Application metadata.\n * @param {(AttributeArg[])=} clientMetadata Client metadata.\n * @param {nodeCallback} callback Called on error or with the new user.\n * @param {ClientMetadata} clientMetadata object which is passed from client to Cognito Lambda trigger\n * @returns {void}\n */\n ;\n\n _proto.signUp = function signUp(username, password, userAttributes, validationData, callback, clientMetadata) {\n var _this = this;\n\n var jsonReq = {\n ClientId: this.clientId,\n Username: username,\n Password: password,\n UserAttributes: userAttributes,\n ValidationData: validationData,\n ClientMetadata: clientMetadata\n };\n\n if (this.getUserContextData(username)) {\n jsonReq.UserContextData = this.getUserContextData(username);\n }\n\n this.client.request('SignUp', jsonReq, function (err, data) {\n if (err) {\n return callback(err, null);\n }\n\n var cognitoUser = {\n Username: username,\n Pool: _this,\n Storage: _this.storage\n };\n var returnData = {\n user: new CognitoUser(cognitoUser),\n userConfirmed: data.UserConfirmed,\n userSub: data.UserSub,\n codeDeliveryDetails: data.CodeDeliveryDetails\n };\n return callback(null, returnData);\n });\n }\n /**\n * method for getting the current user of the application from the local storage\n *\n * @returns {CognitoUser} the user retrieved from storage\n */\n ;\n\n _proto.getCurrentUser = function getCurrentUser() {\n var lastUserKey = \"CognitoIdentityServiceProvider.\" + this.clientId + \".LastAuthUser\";\n var lastAuthUser = this.storage.getItem(lastUserKey);\n\n if (lastAuthUser) {\n var cognitoUser = {\n Username: lastAuthUser,\n Pool: this,\n Storage: this.storage\n };\n return new CognitoUser(cognitoUser);\n }\n\n return null;\n }\n /**\n * This method returns the encoded data string used for cognito advanced security feature.\n * This would be generated only when developer has included the JS used for collecting the\n * data on their client. Please refer to documentation to know more about using AdvancedSecurity\n * features\n * @param {string} username the username for the context data\n * @returns {string} the user context data\n **/\n ;\n\n _proto.getUserContextData = function getUserContextData(username) {\n if (typeof AmazonCognitoAdvancedSecurityData === 'undefined') {\n return undefined;\n }\n /* eslint-disable */\n\n\n var amazonCognitoAdvancedSecurityDataConst = AmazonCognitoAdvancedSecurityData;\n /* eslint-enable */\n\n if (this.advancedSecurityDataCollectionFlag) {\n var advancedSecurityData = amazonCognitoAdvancedSecurityDataConst.getData(username, this.userPoolId, this.clientId);\n\n if (advancedSecurityData) {\n var userContextData = {\n EncodedData: advancedSecurityData\n };\n return userContextData;\n }\n }\n\n return {};\n };\n\n return CognitoUserPool;\n}();\n\nexport { CognitoUserPool as default };","import * as Cookies from 'js-cookie';\n/** @class */\n\nvar CookieStorage = /*#__PURE__*/function () {\n /**\n * Constructs a new CookieStorage object\n * @param {object} data Creation options.\n * @param {string} data.domain Cookies domain (mandatory).\n * @param {string} data.path Cookies path (default: '/')\n * @param {integer} data.expires Cookie expiration (in days, default: 365)\n * @param {boolean} data.secure Cookie secure flag (default: true)\n */\n function CookieStorage(data) {\n if (data.domain) {\n this.domain = data.domain;\n } else {\n throw new Error('The domain of cookieStorage can not be undefined.');\n }\n\n if (data.path) {\n this.path = data.path;\n } else {\n this.path = '/';\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'expires')) {\n this.expires = data.expires;\n } else {\n this.expires = 365;\n }\n\n if (Object.prototype.hasOwnProperty.call(data, 'secure')) {\n this.secure = data.secure;\n } else {\n this.secure = true;\n }\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n\n\n var _proto = CookieStorage.prototype;\n\n _proto.setItem = function setItem(key, value) {\n Cookies.set(key, value, {\n path: this.path,\n expires: this.expires,\n domain: this.domain,\n secure: this.secure\n });\n return Cookies.get(key);\n }\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n ;\n\n _proto.getItem = function getItem(key) {\n return Cookies.get(key);\n }\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n ;\n\n _proto.removeItem = function removeItem(key) {\n return Cookies.remove(key, {\n path: this.path,\n domain: this.domain,\n secure: this.secure\n });\n }\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n ;\n\n _proto.clear = function clear() {\n var cookies = Cookies.get();\n var index;\n\n for (index = 0; index < cookies.length; ++index) {\n Cookies.remove(cookies[index]);\n }\n\n return {};\n };\n\n return CookieStorage;\n}();\n\nexport { CookieStorage as default };","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar MIME_MAP = [\n { type: 'text/plain', ext: 'txt' },\n { type: 'text/html', ext: 'html' },\n { type: 'text/javascript', ext: 'js' },\n { type: 'text/css', ext: 'css' },\n { type: 'text/csv', ext: 'csv' },\n { type: 'text/yaml', ext: 'yml' },\n { type: 'text/yaml', ext: 'yaml' },\n { type: 'text/calendar', ext: 'ics' },\n { type: 'text/calendar', ext: 'ical' },\n { type: 'image/png', ext: 'png' },\n { type: 'image/gif', ext: 'gif' },\n { type: 'image/jpeg', ext: 'jpg' },\n { type: 'image/jpeg', ext: 'jpeg' },\n { type: 'image/bmp', ext: 'bmp' },\n { type: 'image/x-icon', ext: 'ico' },\n { type: 'image/tiff', ext: 'tif' },\n { type: 'image/tiff', ext: 'tiff' },\n { type: 'image/svg+xml', ext: 'svg' },\n { type: 'application/json', ext: 'json' },\n { type: 'application/xml', ext: 'xml' },\n { type: 'application/x-sh', ext: 'sh' },\n { type: 'application/zip', ext: 'zip' },\n { type: 'application/x-rar-compressed', ext: 'rar' },\n { type: 'application/x-tar', ext: 'tar' },\n { type: 'application/x-bzip', ext: 'bz' },\n { type: 'application/x-bzip2', ext: 'bz2' },\n { type: 'application/pdf', ext: 'pdf' },\n { type: 'application/java-archive', ext: 'jar' },\n { type: 'application/msword', ext: 'doc' },\n { type: 'application/vnd.ms-excel', ext: 'xls' },\n { type: 'application/vnd.ms-excel', ext: 'xlsx' },\n { type: 'message/rfc822', ext: 'eml' },\n];\nexport var isEmpty = function (obj) {\n if (obj === void 0) { obj = {}; }\n return Object.keys(obj).length === 0;\n};\nexport var sortByField = function (list, field, dir) {\n if (!list || !list.sort) {\n return false;\n }\n var dirX = dir && dir === 'desc' ? -1 : 1;\n list.sort(function (a, b) {\n var a_val = a[field];\n var b_val = b[field];\n if (typeof b_val === 'undefined') {\n return typeof a_val === 'undefined' ? 0 : 1 * dirX;\n }\n if (typeof a_val === 'undefined') {\n return -1 * dirX;\n }\n if (a_val < b_val) {\n return -1 * dirX;\n }\n if (a_val > b_val) {\n return 1 * dirX;\n }\n return 0;\n });\n return true;\n};\nexport var objectLessAttributes = function (obj, less) {\n var ret = Object.assign({}, obj);\n if (less) {\n if (typeof less === 'string') {\n delete ret[less];\n }\n else {\n less.forEach(function (attr) {\n delete ret[attr];\n });\n }\n }\n return ret;\n};\nexport var filenameToContentType = function (filename, defVal) {\n if (defVal === void 0) { defVal = 'application/octet-stream'; }\n var name = filename.toLowerCase();\n var filtered = MIME_MAP.filter(function (mime) { return name.endsWith('.' + mime.ext); });\n return filtered.length > 0 ? filtered[0].type : defVal;\n};\nexport var isTextFile = function (contentType) {\n var type = contentType.toLowerCase();\n if (type.startsWith('text/')) {\n return true;\n }\n return ('application/json' === type ||\n 'application/xml' === type ||\n 'application/sh' === type);\n};\nexport var generateRandomString = function () {\n var result = '';\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (var i = 32; i > 0; i -= 1) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport var makeQuerablePromise = function (promise) {\n if (promise.isResolved)\n return promise;\n var isPending = true;\n var isRejected = false;\n var isFullfilled = false;\n var result = promise.then(function (data) {\n isFullfilled = true;\n isPending = false;\n return data;\n }, function (e) {\n isRejected = true;\n isPending = false;\n throw e;\n });\n result.isFullfilled = function () { return isFullfilled; };\n result.isPending = function () { return isPending; };\n result.isRejected = function () { return isRejected; };\n return result;\n};\nexport var browserOrNode = function () {\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n var isNode = typeof process !== 'undefined' &&\n process.versions != null &&\n process.versions.node != null;\n return {\n isBrowser: isBrowser,\n isNode: isNode,\n };\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToLowerCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferedKey = whiteListForItself.includes(key)\n ? key\n : key[0].toLowerCase() + key.slice(1);\n ret[transferedKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToLowerCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * transfer the first letter of the keys to lowercase\n * @param {Object} obj - the object need to be transferred\n * @param {Array} whiteListForItself - whitelist itself from being transferred\n * @param {Array} whiteListForChildren - whitelist its children keys from being transferred\n */\nexport var transferKeyToUpperCase = function (obj, whiteListForItself, whiteListForChildren) {\n if (whiteListForItself === void 0) { whiteListForItself = []; }\n if (whiteListForChildren === void 0) { whiteListForChildren = []; }\n if (!isStrictObject(obj))\n return obj;\n var ret = {};\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n var transferredKey = whiteListForItself.includes(key)\n ? key\n : key[0].toUpperCase() + key.slice(1);\n ret[transferredKey] = whiteListForChildren.includes(key)\n ? obj[key]\n : transferKeyToUpperCase(obj[key], whiteListForItself, whiteListForChildren);\n }\n }\n return ret;\n};\n/**\n * Return true if the object is a strict object\n * which means it's not Array, Function, Number, String, Boolean or Null\n * @param obj the Object\n */\nexport var isStrictObject = function (obj) {\n return (obj instanceof Object &&\n !(obj instanceof Array) &&\n !(obj instanceof Function) &&\n !(obj instanceof Number) &&\n !(obj instanceof String) &&\n !(obj instanceof Boolean));\n};\n/**\n * @deprecated use per-function imports\n */\nvar JS = /** @class */ (function () {\n function JS() {\n }\n JS.isEmpty = isEmpty;\n JS.sortByField = sortByField;\n JS.objectLessAttributes = objectLessAttributes;\n JS.filenameToContentType = filenameToContentType;\n JS.isTextFile = isTextFile;\n JS.generateRandomString = generateRandomString;\n JS.makeQuerablePromise = makeQuerablePromise;\n JS.browserOrNode = browserOrNode;\n JS.transferKeyToLowerCase = transferKeyToLowerCase;\n JS.transferKeyToUpperCase = transferKeyToUpperCase;\n JS.isStrictObject = isStrictObject;\n return JS;\n}());\nexport { JS };\n/**\n * @deprecated use per-function imports\n */\nexport default JS;\n//# sourceMappingURL=JS.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./MsWindow\"), exports);\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nvar LOG_LEVELS = {\n VERBOSE: 1,\n DEBUG: 2,\n INFO: 3,\n WARN: 4,\n ERROR: 5,\n};\n/**\n * Write logs\n * @class Logger\n */\nvar ConsoleLogger = /** @class */ (function () {\n /**\n * @constructor\n * @param {string} name - Name of the logger\n */\n function ConsoleLogger(name, level) {\n if (level === void 0) { level = 'WARN'; }\n this.name = name;\n this.level = level;\n }\n ConsoleLogger.prototype._padding = function (n) {\n return n < 10 ? '0' + n : '' + n;\n };\n ConsoleLogger.prototype._ts = function () {\n var dt = new Date();\n return ([this._padding(dt.getMinutes()), this._padding(dt.getSeconds())].join(':') +\n '.' +\n dt.getMilliseconds());\n };\n /**\n * Write log\n * @method\n * @memeberof Logger\n * @param {string} type - log type, default INFO\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype._log = function (type) {\n var msg = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n msg[_i - 1] = arguments[_i];\n }\n var logger_level_name = this.level;\n if (ConsoleLogger.LOG_LEVEL) {\n logger_level_name = ConsoleLogger.LOG_LEVEL;\n }\n if (typeof window !== 'undefined' && window.LOG_LEVEL) {\n logger_level_name = window.LOG_LEVEL;\n }\n var logger_level = LOG_LEVELS[logger_level_name];\n var type_level = LOG_LEVELS[type];\n if (!(type_level >= logger_level)) {\n // Do nothing if type is not greater than or equal to logger level (handle undefined)\n return;\n }\n var log = console.log.bind(console);\n if (type === 'ERROR' && console.error) {\n log = console.error.bind(console);\n }\n if (type === 'WARN' && console.warn) {\n log = console.warn.bind(console);\n }\n var prefix = \"[\" + type + \"] \" + this._ts() + \" \" + this.name;\n if (msg.length === 1 && typeof msg[0] === 'string') {\n log(prefix + \" - \" + msg[0]);\n }\n else if (msg.length === 1) {\n log(prefix, msg[0]);\n }\n else if (typeof msg[0] === 'string') {\n var obj = msg.slice(1);\n if (obj.length === 1) {\n obj = obj[0];\n }\n log(prefix + \" - \" + msg[0], obj);\n }\n else {\n log(prefix, msg);\n }\n };\n /**\n * Write General log. Default to INFO\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.log = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['INFO'], msg));\n };\n /**\n * Write INFO log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.info = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['INFO'], msg));\n };\n /**\n * Write WARN log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.warn = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['WARN'], msg));\n };\n /**\n * Write ERROR log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.error = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['ERROR'], msg));\n };\n /**\n * Write DEBUG log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.debug = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['DEBUG'], msg));\n };\n /**\n * Write VERBOSE log\n * @method\n * @memeberof Logger\n * @param {string|object} msg - Logging message or object\n */\n ConsoleLogger.prototype.verbose = function () {\n var msg = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n msg[_i] = arguments[_i];\n }\n this._log.apply(this, __spread(['VERBOSE'], msg));\n };\n ConsoleLogger.LOG_LEVEL = null;\n return ConsoleLogger;\n}());\nexport { ConsoleLogger };\n//# sourceMappingURL=ConsoleLogger.js.map","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nexport default v1;","import bytesToUuid from './bytesToUuid.js';\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n var generateUUID = function generateUUID(value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || bytesToUuid(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) {\n W[t] = M[i][t];\n }\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","// generated by genversion\nexport var version = '3.2.5';\n//# sourceMappingURL=version.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { version } from './version';\nvar BASE_USER_AGENT = \"aws-amplify/\" + version;\nexport var Platform = {\n userAgent: BASE_USER_AGENT + \" js\",\n product: '',\n navigator: null,\n isReactNative: false,\n};\nif (typeof navigator !== 'undefined' && navigator.product) {\n Platform.product = navigator.product || '';\n Platform.navigator = navigator || null;\n switch (navigator.product) {\n case 'ReactNative':\n Platform.userAgent = BASE_USER_AGENT + \" react-native\";\n Platform.isReactNative = true;\n break;\n default:\n Platform.userAgent = BASE_USER_AGENT + \" js\";\n Platform.isReactNative = false;\n break;\n }\n}\nexport var getAmplifyUserAgent = function () {\n return Platform.userAgent;\n};\n/**\n * @deprecated use named import\n */\nexport default Platform;\n//# sourceMappingURL=index.js.map","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if(arrayMode === 'strict'){\n target[keys[i]] = [ a[keys[i]] ];\n }else{\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.buildOptions = function(options, defaultOptions, props) {\n var newOptions = {};\n if (!options) {\n return defaultOptions; //if there are not options\n }\n\n for (let i = 0; i < props.length; i++) {\n if (options[props[i]] !== undefined) {\n newOptions[props[i]] = options[props[i]];\n } else {\n newOptions[props[i]] = defaultOptions[props[i]];\n }\n }\n return newOptions;\n};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","/* tslint:disable */\n\nimport zenObservable from 'zen-observable';\n\nnamespace Observable {\n\n}\n\nimport { ZenObservable } from './types';\n\nexport { ZenObservable };\n\nexport type Observer = ZenObservable.Observer;\nexport type Subscriber = ZenObservable.Subscriber;\nexport type ObservableLike = ZenObservable.ObservableLike;\n\nexport const Observable: {\n new (subscriber: Subscriber): Observable;\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n} = zenObservable;\n\nexport interface Observable {\n subscribe(\n observerOrNext: ((value: T) => void) | ZenObservable.Observer,\n error?: (error: any) => void,\n complete?: () => void,\n ): ZenObservable.Subscription;\n\n forEach(fn: (value: T) => void): Promise;\n\n map(fn: (value: T) => R): Observable;\n\n filter(fn: (value: T) => boolean): Observable;\n\n reduce(\n fn: (previousValue: R | T, currentValue: T) => R | T,\n initialValue?: R | T,\n ): Observable;\n\n flatMap(fn: (value: T) => ZenObservable.ObservableLike): Observable;\n\n from(\n observable: Observable | ZenObservable.ObservableLike | ArrayLike,\n ): Observable;\n of(...args: Array): Observable;\n}\n","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var CognitoHostedUIIdentityProvider;\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\nexport function isFederatedSignInOptions(obj) {\n var keys = ['provider', 'customState'];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function isFederatedSignInOptionsCustom(obj) {\n var keys = [\n 'customProvider',\n 'customState',\n ];\n return obj && !!keys.find(function (k) { return obj.hasOwnProperty(k); });\n}\nexport function isCognitoHostedOpts(oauth) {\n return oauth.redirectSignIn !== undefined;\n}\nexport var AuthErrorTypes;\n(function (AuthErrorTypes) {\n AuthErrorTypes[\"NoConfig\"] = \"noConfig\";\n AuthErrorTypes[\"MissingAuthConfig\"] = \"missingAuthConfig\";\n AuthErrorTypes[\"EmptyUsername\"] = \"emptyUsername\";\n AuthErrorTypes[\"InvalidUsername\"] = \"invalidUsername\";\n AuthErrorTypes[\"EmptyPassword\"] = \"emptyPassword\";\n AuthErrorTypes[\"EmptyCode\"] = \"emptyCode\";\n AuthErrorTypes[\"SignUpError\"] = \"signUpError\";\n AuthErrorTypes[\"NoMFA\"] = \"noMFA\";\n AuthErrorTypes[\"InvalidMFA\"] = \"invalidMFA\";\n AuthErrorTypes[\"EmptyChallengeResponse\"] = \"emptyChallengeResponse\";\n AuthErrorTypes[\"NoUserSession\"] = \"noUserSession\";\n AuthErrorTypes[\"Default\"] = \"default\";\n})(AuthErrorTypes || (AuthErrorTypes = {}));\nexport function isUsernamePasswordOpts(obj) {\n return !!obj.username;\n}\n//# sourceMappingURL=Auth.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n *\t http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { isUsernamePasswordOpts, isCognitoHostedOpts, isFederatedSignInOptions, isFederatedSignInOptionsCustom, } from './types';\nimport { Amplify, ConsoleLogger as Logger, Hub, Credentials, StorageHelper, Parser, JS, } from '@aws-amplify/core';\nimport { CookieStorage, CognitoUserPool, AuthenticationDetails, CognitoUser, CognitoUserSession, CognitoUserAttribute, CognitoIdToken, CognitoRefreshToken, CognitoAccessToken, } from 'amazon-cognito-identity-js';\nimport { parse } from 'url';\nimport OAuth from './OAuth/OAuth';\nimport { default as urlListener } from './urlListener';\nimport { AuthError, NoUserPoolError } from './Errors';\nimport { AuthErrorTypes } from './types/Auth';\nvar logger = new Logger('AuthClass');\nvar USER_ADMIN_SCOPE = 'aws.cognito.signin.user.admin';\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchAuthEvent = function (event, data, message) {\n Hub.dispatch('auth', { event: event, data: data, message: message }, 'Auth', AMPLIFY_SYMBOL);\n};\nexport var CognitoHostedUIIdentityProvider;\n(function (CognitoHostedUIIdentityProvider) {\n CognitoHostedUIIdentityProvider[\"Cognito\"] = \"COGNITO\";\n CognitoHostedUIIdentityProvider[\"Google\"] = \"Google\";\n CognitoHostedUIIdentityProvider[\"Facebook\"] = \"Facebook\";\n CognitoHostedUIIdentityProvider[\"Amazon\"] = \"LoginWithAmazon\";\n})(CognitoHostedUIIdentityProvider || (CognitoHostedUIIdentityProvider = {}));\n/**\n * Provide authentication steps\n */\nvar AuthClass = /** @class */ (function () {\n /**\n * Initialize Auth with AWS configurations\n * @param {Object} config - Configuration of the Auth\n */\n function AuthClass(config) {\n var _this = this;\n this.userPool = null;\n this.user = null;\n this.configure(config);\n this.currentUserCredentials = this.currentUserCredentials.bind(this);\n Hub.listen('auth', function (_a) {\n var payload = _a.payload;\n var event = payload.event;\n switch (event) {\n case 'signIn':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'false');\n break;\n case 'signOut':\n _this._storage.removeItem('amplify-signin-with-hostedUI');\n break;\n case 'cognitoHostedUI':\n _this._storage.setItem('amplify-signin-with-hostedUI', 'true');\n break;\n }\n });\n Amplify.register(this);\n }\n AuthClass.prototype.getModuleName = function () {\n return 'Auth';\n };\n AuthClass.prototype.configure = function (config) {\n var _this = this;\n if (!config)\n return this._config || {};\n logger.debug('configure Auth');\n var conf = Object.assign({}, this._config, Parser.parseMobilehubConfig(config).Auth, config);\n this._config = conf;\n var _a = this._config, userPoolId = _a.userPoolId, userPoolWebClientId = _a.userPoolWebClientId, cookieStorage = _a.cookieStorage, oauth = _a.oauth, region = _a.region, identityPoolId = _a.identityPoolId, mandatorySignIn = _a.mandatorySignIn, refreshHandlers = _a.refreshHandlers, identityPoolRegion = _a.identityPoolRegion, clientMetadata = _a.clientMetadata;\n if (!this._config.storage) {\n // backward compatability\n if (cookieStorage)\n this._storage = new CookieStorage(cookieStorage);\n else {\n this._storage = new StorageHelper().getStorage();\n }\n }\n else {\n if (!this._isValidAuthStorage(this._config.storage)) {\n logger.error('The storage in the Auth config is not valid!');\n throw new Error('Empty storage object');\n }\n this._storage = this._config.storage;\n }\n this._storageSync = Promise.resolve();\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n if (userPoolId) {\n var userPoolData = {\n UserPoolId: userPoolId,\n ClientId: userPoolWebClientId,\n };\n userPoolData.Storage = this._storage;\n this.userPool = new CognitoUserPool(userPoolData);\n }\n Credentials.configure({\n mandatorySignIn: mandatorySignIn,\n region: identityPoolRegion || region,\n userPoolId: userPoolId,\n identityPoolId: identityPoolId,\n refreshHandlers: refreshHandlers,\n storage: this._storage,\n });\n // initiailize cognitoauth client if hosted ui options provided\n // to keep backward compatibility:\n var cognitoHostedUIConfig = oauth\n ? isCognitoHostedOpts(this._config.oauth)\n ? oauth\n : oauth.awsCognito\n : undefined;\n if (cognitoHostedUIConfig) {\n var cognitoAuthParams = Object.assign({\n cognitoClientId: userPoolWebClientId,\n UserPoolId: userPoolId,\n domain: cognitoHostedUIConfig['domain'],\n scopes: cognitoHostedUIConfig['scope'],\n redirectSignIn: cognitoHostedUIConfig['redirectSignIn'],\n redirectSignOut: cognitoHostedUIConfig['redirectSignOut'],\n responseType: cognitoHostedUIConfig['responseType'],\n Storage: this._storage,\n urlOpener: cognitoHostedUIConfig['urlOpener'],\n clientMetadata: clientMetadata,\n }, cognitoHostedUIConfig['options']);\n this._oAuthHandler = new OAuth({\n scopes: cognitoAuthParams.scopes,\n config: cognitoAuthParams,\n cognitoClientId: cognitoAuthParams.cognitoClientId,\n });\n // **NOTE** - Remove this in a future major release as it is a breaking change\n // Prevents _handleAuthResponse from being called multiple times in Expo\n // See https://github.com/aws-amplify/amplify-js/issues/4388\n var usedResponseUrls_1 = {};\n urlListener(function (_a) {\n var url = _a.url;\n if (usedResponseUrls_1[url]) {\n return;\n }\n usedResponseUrls_1[url] = true;\n _this._handleAuthResponse(url);\n });\n }\n dispatchAuthEvent('configured', null, \"The Auth category has been configured successfully\");\n return this._config;\n };\n /**\n * Sign up with username, password and other attributes like phone, email\n * @param {String | object} params - The user attributes used for signin\n * @param {String[]} restOfAttrs - for the backward compatability\n * @return - A promise resolves callback data if success\n */\n AuthClass.prototype.signUp = function (params) {\n var _this = this;\n var restOfAttrs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n restOfAttrs[_i - 1] = arguments[_i];\n }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var username = null;\n var password = null;\n var attributes = [];\n var validationData = null;\n var clientMetadata;\n if (params && typeof params === 'string') {\n username = params;\n password = restOfAttrs ? restOfAttrs[0] : null;\n var email = restOfAttrs ? restOfAttrs[1] : null;\n var phone_number = restOfAttrs ? restOfAttrs[2] : null;\n if (email)\n attributes.push({ Name: 'email', Value: email });\n if (phone_number)\n attributes.push({ Name: 'phone_number', Value: phone_number });\n }\n else if (params && typeof params === 'object') {\n username = params['username'];\n password = params['password'];\n if (params && params.clientMetadata) {\n clientMetadata = params.clientMetadata;\n }\n else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n var attrs_1 = params['attributes'];\n if (attrs_1) {\n Object.keys(attrs_1).map(function (key) {\n var ele = { Name: key, Value: attrs_1[key] };\n attributes.push(ele);\n });\n }\n validationData = params['validationData'] || null;\n }\n else {\n return this.rejectAuthError(AuthErrorTypes.SignUpError);\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n logger.debug('signUp attrs:', attributes);\n logger.debug('signUp validation data:', validationData);\n return new Promise(function (resolve, reject) {\n _this.userPool.signUp(username, password, attributes, validationData, function (err, data) {\n if (err) {\n dispatchAuthEvent('signUp_failure', err, username + \" failed to signup\");\n reject(err);\n }\n else {\n dispatchAuthEvent('signUp', data, username + \" has signed up successfully\");\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Send the verfication code to confirm sign up\n * @param {String} username - The username to be confirmed\n * @param {String} code - The verification code\n * @param {ConfirmSignUpOptions} options - other options for confirm signup\n * @return - A promise resolves callback data if success\n */\n AuthClass.prototype.confirmSignUp = function (username, code, options) {\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n var user = this.createCognitoUser(username);\n var forceAliasCreation = options && typeof options.forceAliasCreation === 'boolean'\n ? options.forceAliasCreation\n : true;\n var clientMetadata;\n if (options && options.clientMetadata) {\n clientMetadata = options.clientMetadata;\n }\n else if (this._config.clientMetadata) {\n clientMetadata = this._config.clientMetadata;\n }\n return new Promise(function (resolve, reject) {\n user.confirmRegistration(code, forceAliasCreation, function (err, data) {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Resend the verification code\n * @param {String} username - The username to be confirmed\n * @param {ClientMetadata} clientMetadata - Metadata to be passed to Cognito Lambda triggers\n * @return - A promise resolves data if success\n */\n AuthClass.prototype.resendSignUp = function (username, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.resendConfirmationCode(function (err, data) {\n if (err) {\n reject(err);\n }\n else {\n resolve(data);\n }\n }, clientMetadata);\n });\n };\n /**\n * Sign in\n * @param {String | SignInOpts} usernameOrSignInOpts - The username to be signed in or the sign in options\n * @param {String} password - The password of the username\n * @return - A promise resolves the CognitoUser\n */\n AuthClass.prototype.signIn = function (usernameOrSignInOpts, pw, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var username = null;\n var password = null;\n var validationData = {};\n // for backward compatibility\n if (typeof usernameOrSignInOpts === 'string') {\n username = usernameOrSignInOpts;\n password = pw;\n }\n else if (isUsernamePasswordOpts(usernameOrSignInOpts)) {\n if (typeof pw !== 'undefined') {\n logger.warn('The password should be defined under the first parameter object!');\n }\n username = usernameOrSignInOpts.username;\n password = usernameOrSignInOpts.password;\n validationData = usernameOrSignInOpts.validationData;\n }\n else {\n return this.rejectAuthError(AuthErrorTypes.InvalidUsername);\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var authDetails = new AuthenticationDetails({\n Username: username,\n Password: password,\n ValidationData: validationData,\n ClientMetadata: clientMetadata,\n });\n if (password) {\n return this.signInWithPassword(authDetails);\n }\n else {\n return this.signInWithoutPassword(authDetails);\n }\n };\n /**\n * Return an object with the authentication callbacks\n * @param {CognitoUser} user - the cognito user object\n * @param {} resolve - function called when resolving the current step\n * @param {} reject - function called when rejecting the current step\n * @return - an object with the callback methods for user authentication\n */\n AuthClass.prototype.authCallbacks = function (user, resolve, reject) {\n var _this = this;\n var that = this;\n return {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_1, currentUser, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n delete user['challengeName'];\n delete user['challengeParam'];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 9]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 9];\n case 4:\n e_1 = _a.sent();\n logger.debug('cannot get cognito credentials', e_1);\n return [3 /*break*/, 9];\n case 5:\n _a.trys.push([5, 7, , 8]);\n return [4 /*yield*/, this.currentUserPoolUser()];\n case 6:\n currentUser = _a.sent();\n that.user = currentUser;\n dispatchAuthEvent('signIn', currentUser, \"A user \" + user.getUsername() + \" has been signed in\");\n resolve(currentUser);\n return [3 /*break*/, 8];\n case 7:\n e_2 = _a.sent();\n logger.error('Failed to get the signed in user', e_2);\n reject(e_2);\n return [3 /*break*/, 8];\n case 8: return [7 /*endfinally*/];\n case 9: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('signIn failure', err);\n dispatchAuthEvent('signIn_failure', err, user.getUsername() + \" failed to signin\");\n reject(err);\n },\n customChallenge: function (challengeParam) {\n logger.debug('signIn custom challenge answer required');\n user['challengeName'] = 'CUSTOM_CHALLENGE';\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaRequired: function (challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function (challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n newPasswordRequired: function (userAttributes, requiredAttributes) {\n logger.debug('signIn new password');\n user['challengeName'] = 'NEW_PASSWORD_REQUIRED';\n user['challengeParam'] = {\n userAttributes: userAttributes,\n requiredAttributes: requiredAttributes,\n };\n resolve(user);\n },\n totpRequired: function (challengeName, challengeParam) {\n logger.debug('signIn totpRequired');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n selectMFAType: function (challengeName, challengeParam) {\n logger.debug('signIn selectMFAType', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n };\n };\n /**\n * Sign in with a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n AuthClass.prototype.signInWithPassword = function (authDetails) {\n var _this = this;\n var user = this.createCognitoUser(authDetails.getUsername());\n return new Promise(function (resolve, reject) {\n user.authenticateUser(authDetails, _this.authCallbacks(user, resolve, reject));\n });\n };\n /**\n * Sign in without a password\n * @private\n * @param {AuthenticationDetails} authDetails - the user sign in data\n * @return - A promise resolves the CognitoUser object if success or mfa required\n */\n AuthClass.prototype.signInWithoutPassword = function (authDetails) {\n var _this = this;\n var user = this.createCognitoUser(authDetails.getUsername());\n user.setAuthenticationFlowType('CUSTOM_AUTH');\n return new Promise(function (resolve, reject) {\n user.initiateAuth(authDetails, _this.authCallbacks(user, resolve, reject));\n });\n };\n /**\n * get user current preferred mfa option\n * this method doesn't work with totp, we need to deprecate it.\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves the current preferred mfa option if success\n */\n AuthClass.prototype.getMFAOptions = function (user) {\n return new Promise(function (res, rej) {\n user.getMFAOptions(function (err, mfaOptions) {\n if (err) {\n logger.debug('get MFA Options failed', err);\n rej(err);\n return;\n }\n logger.debug('get MFA options success', mfaOptions);\n res(mfaOptions);\n return;\n });\n });\n };\n /**\n * get preferred mfa method\n * @param {CognitoUser} user - the current cognito user\n * @param {GetPreferredMFAOpts} params - options for getting the current user preferred MFA\n */\n AuthClass.prototype.getPreferredMFA = function (user, params) {\n var that = this;\n return new Promise(function (res, rej) {\n var bypassCache = params ? params.bypassCache : false;\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting preferred mfa failed', err);\n rej(err);\n return;\n }\n var mfaType = that._getMfaTypeFromUserData(data);\n if (!mfaType) {\n rej('invalid MFA Type');\n return;\n }\n else {\n res(mfaType);\n return;\n }\n }, { bypassCache: bypassCache });\n });\n };\n AuthClass.prototype._getMfaTypeFromUserData = function (data) {\n var ret = null;\n var preferredMFA = data.PreferredMfaSetting;\n // if the user has used Auth.setPreferredMFA() to setup the mfa type\n // then the \"PreferredMfaSetting\" would exist in the response\n if (preferredMFA) {\n ret = preferredMFA;\n }\n else {\n // if mfaList exists but empty, then its noMFA\n var mfaList = data.UserMFASettingList;\n if (!mfaList) {\n // if SMS was enabled by using Auth.enableSMS(),\n // the response would contain MFAOptions\n // as for now Cognito only supports for SMS, so we will say it is 'SMS_MFA'\n // if it does not exist, then it should be NOMFA\n var MFAOptions = data.MFAOptions;\n if (MFAOptions) {\n ret = 'SMS_MFA';\n }\n else {\n ret = 'NOMFA';\n }\n }\n else if (mfaList.length === 0) {\n ret = 'NOMFA';\n }\n else {\n logger.debug('invalid case for getPreferredMFA', data);\n }\n }\n return ret;\n };\n AuthClass.prototype._getUserData = function (user, params) {\n return new Promise(function (res, rej) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n rej(err);\n return;\n }\n else {\n res(data);\n return;\n }\n }, params);\n });\n };\n /**\n * set preferred MFA method\n * @param {CognitoUser} user - the current Cognito user\n * @param {string} mfaMethod - preferred mfa method\n * @return - A promise resolve if success\n */\n AuthClass.prototype.setPreferredMFA = function (user, mfaMethod) {\n return __awaiter(this, void 0, void 0, function () {\n var userData, smsMfaSettings, totpMfaSettings, _a, mfaList, currentMFAType, that;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._getUserData(user, { bypassCache: true })];\n case 1:\n userData = _b.sent();\n smsMfaSettings = null;\n totpMfaSettings = null;\n _a = mfaMethod;\n switch (_a) {\n case 'TOTP' || 'SOFTWARE_TOKEN_MFA': return [3 /*break*/, 2];\n case 'SMS' || 'SMS_MFA': return [3 /*break*/, 3];\n case 'NOMFA': return [3 /*break*/, 4];\n }\n return [3 /*break*/, 6];\n case 2:\n totpMfaSettings = {\n PreferredMfa: true,\n Enabled: true,\n };\n return [3 /*break*/, 7];\n case 3:\n smsMfaSettings = {\n PreferredMfa: true,\n Enabled: true,\n };\n return [3 /*break*/, 7];\n case 4:\n mfaList = userData['UserMFASettingList'];\n return [4 /*yield*/, this._getMfaTypeFromUserData(userData)];\n case 5:\n currentMFAType = _b.sent();\n if (currentMFAType === 'NOMFA') {\n return [2 /*return*/, Promise.resolve('No change for mfa type')];\n }\n else if (currentMFAType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else if (currentMFAType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else {\n return [2 /*return*/, this.rejectAuthError(AuthErrorTypes.InvalidMFA)];\n }\n // if there is a UserMFASettingList in the response\n // we need to disable every mfa type in that list\n if (mfaList && mfaList.length !== 0) {\n // to disable SMS or TOTP if exists in that list\n mfaList.forEach(function (mfaType) {\n if (mfaType === 'SMS_MFA') {\n smsMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n else if (mfaType === 'SOFTWARE_TOKEN_MFA') {\n totpMfaSettings = {\n PreferredMfa: false,\n Enabled: false,\n };\n }\n });\n }\n return [3 /*break*/, 7];\n case 6:\n logger.debug('no validmfa method provided');\n return [2 /*return*/, this.rejectAuthError(AuthErrorTypes.NoMFA)];\n case 7:\n that = this;\n return [2 /*return*/, new Promise(function (res, rej) {\n user.setUserMfaPreference(smsMfaSettings, totpMfaSettings, function (err, result) {\n if (err) {\n logger.debug('Set user mfa preference error', err);\n return rej(err);\n }\n logger.debug('Set user mfa success', result);\n logger.debug('Caching the latest user data into local');\n // cache the latest result into user data\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n return rej(err);\n }\n else {\n return res(result);\n }\n }, { bypassCache: true });\n });\n })];\n }\n });\n });\n };\n /**\n * diable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n AuthClass.prototype.disableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.disableMFA(function (err, data) {\n if (err) {\n logger.debug('disable mfa failed', err);\n rej(err);\n return;\n }\n logger.debug('disable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * enable SMS\n * @deprecated\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves is success\n */\n AuthClass.prototype.enableSMS = function (user) {\n return new Promise(function (res, rej) {\n user.enableMFA(function (err, data) {\n if (err) {\n logger.debug('enable mfa failed', err);\n rej(err);\n return;\n }\n logger.debug('enable mfa succeed', data);\n res(data);\n return;\n });\n });\n };\n /**\n * Setup TOTP\n * @param {CognitoUser} user - the current user\n * @return - A promise resolves with the secret code if success\n */\n AuthClass.prototype.setupTOTP = function (user) {\n return new Promise(function (res, rej) {\n user.associateSoftwareToken({\n onFailure: function (err) {\n logger.debug('associateSoftwareToken failed', err);\n rej(err);\n return;\n },\n associateSecretCode: function (secretCode) {\n logger.debug('associateSoftwareToken sucess', secretCode);\n res(secretCode);\n return;\n },\n });\n });\n };\n /**\n * verify TOTP setup\n * @param {CognitoUser} user - the current user\n * @param {string} challengeAnswer - challenge answer\n * @return - A promise resolves is success\n */\n AuthClass.prototype.verifyTotpToken = function (user, challengeAnswer) {\n logger.debug('verfication totp token', user, challengeAnswer);\n return new Promise(function (res, rej) {\n user.verifySoftwareToken(challengeAnswer, 'My TOTP device', {\n onFailure: function (err) {\n logger.debug('verifyTotpToken failed', err);\n rej(err);\n return;\n },\n onSuccess: function (data) {\n logger.debug('verifyTotpToken success', data);\n res(data);\n return;\n },\n });\n });\n };\n /**\n * Send MFA code to confirm sign in\n * @param {Object} user - The CognitoUser object\n * @param {String} code - The confirmation code\n */\n AuthClass.prototype.confirmSignIn = function (user, code, mfaType, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendMFACode(code, {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 6];\n case 4:\n e_3 = _a.sent();\n logger.debug('cannot get cognito credentials', e_3);\n return [3 /*break*/, 6];\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, user + \" has signed in\");\n resolve(user);\n return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('confirm signIn failure', err);\n reject(err);\n },\n }, mfaType, clientMetadata);\n });\n };\n AuthClass.prototype.completeNewPassword = function (user, password, requiredAttributes, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.completeNewPasswordChallenge(password, requiredAttributes, {\n onSuccess: function (session) { return __awaiter(_this, void 0, void 0, function () {\n var cred, e_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(session);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 4, 5, 6]);\n return [4 /*yield*/, Credentials.clear()];\n case 2:\n _a.sent();\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n cred = _a.sent();\n logger.debug('succeed to get cognito credentials', cred);\n return [3 /*break*/, 6];\n case 4:\n e_4 = _a.sent();\n logger.debug('cannot get cognito credentials', e_4);\n return [3 /*break*/, 6];\n case 5:\n that.user = user;\n dispatchAuthEvent('signIn', user, user + \" has signed in\");\n resolve(user);\n return [7 /*endfinally*/];\n case 6: return [2 /*return*/];\n }\n });\n }); },\n onFailure: function (err) {\n logger.debug('completeNewPassword failure', err);\n dispatchAuthEvent('completeNewPassword_failure', err, _this.user + \" failed to complete the new password flow\");\n reject(err);\n },\n mfaRequired: function (challengeName, challengeParam) {\n logger.debug('signIn MFA required');\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n mfaSetup: function (challengeName, challengeParam) {\n logger.debug('signIn mfa setup', challengeName);\n user['challengeName'] = challengeName;\n user['challengeParam'] = challengeParam;\n resolve(user);\n },\n }, clientMetadata);\n });\n };\n /**\n * Send the answer to a custom challenge\n * @param {CognitoUser} user - The CognitoUser object\n * @param {String} challengeResponses - The confirmation code\n */\n AuthClass.prototype.sendCustomChallengeAnswer = function (user, challengeResponses, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!challengeResponses) {\n return this.rejectAuthError(AuthErrorTypes.EmptyChallengeResponse);\n }\n var that = this;\n return new Promise(function (resolve, reject) {\n user.sendCustomChallengeAnswer(challengeResponses, _this.authCallbacks(user, resolve, reject), clientMetadata);\n });\n };\n /**\n * Update an authenticated users' attributes\n * @param {CognitoUser} - The currently logged in user object\n * @return {Promise}\n **/\n AuthClass.prototype.updateUserAttributes = function (user, attributes, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n var attributeList = [];\n var that = this;\n return new Promise(function (resolve, reject) {\n that.userSession(user).then(function (session) {\n for (var key in attributes) {\n if (key !== 'sub' && key.indexOf('_verified') < 0) {\n var attr = {\n Name: key,\n Value: attributes[key],\n };\n attributeList.push(attr);\n }\n }\n user.updateAttributes(attributeList, function (err, result) {\n if (err) {\n return reject(err);\n }\n else {\n return resolve(result);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Return user attributes\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to user attributes if success\n */\n AuthClass.prototype.userAttributes = function (user) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.getUserAttributes(function (err, attributes) {\n if (err) {\n reject(err);\n }\n else {\n resolve(attributes);\n }\n });\n });\n });\n };\n AuthClass.prototype.verifiedContact = function (user) {\n var that = this;\n return this.userAttributes(user).then(function (attributes) {\n var attrs = that.attributesToObject(attributes);\n var unverified = {};\n var verified = {};\n if (attrs['email']) {\n if (attrs['email_verified']) {\n verified['email'] = attrs['email'];\n }\n else {\n unverified['email'] = attrs['email'];\n }\n }\n if (attrs['phone_number']) {\n if (attrs['phone_number_verified']) {\n verified['phone_number'] = attrs['phone_number'];\n }\n else {\n unverified['phone_number'] = attrs['phone_number'];\n }\n }\n return {\n verified: verified,\n unverified: unverified,\n };\n });\n };\n /**\n * Get current authenticated user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n AuthClass.prototype.currentUserPoolUser = function (params) {\n var _this = this;\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n var that = this;\n return new Promise(function (res, rej) {\n _this._storageSync\n .then(function () {\n var user = that.userPool.getCurrentUser();\n if (!user) {\n logger.debug('Failed to get user from user pool');\n rej('No current user');\n return;\n }\n // refresh the session if the session expired.\n user.getSession(function (err, session) {\n if (err) {\n logger.debug('Failed to get the user session', err);\n rej(err);\n return;\n }\n // get user data from Cognito\n var bypassCache = params ? params.bypassCache : false;\n // validate the token's scope fisrt before calling this function\n var _a = session.getAccessToken().decodePayload().scope, scope = _a === void 0 ? '' : _a;\n if (scope.split(' ').includes(USER_ADMIN_SCOPE)) {\n user.getUserData(function (err, data) {\n if (err) {\n logger.debug('getting user data failed', err);\n // Make sure the user is still valid\n if (err.message === 'User is disabled.' ||\n err.message === 'User does not exist.' ||\n err.message === 'Access Token has been revoked' // Session revoked by another app\n ) {\n rej(err);\n }\n else {\n // the error may also be thrown when lack of permissions to get user info etc\n // in that case we just bypass the error\n res(user);\n }\n return;\n }\n var preferredMFA = data.PreferredMfaSetting || 'NOMFA';\n var attributeList = [];\n for (var i = 0; i < data.UserAttributes.length; i++) {\n var attribute = {\n Name: data.UserAttributes[i].Name,\n Value: data.UserAttributes[i].Value,\n };\n var userAttribute = new CognitoUserAttribute(attribute);\n attributeList.push(userAttribute);\n }\n var attributes = that.attributesToObject(attributeList);\n Object.assign(user, { attributes: attributes, preferredMFA: preferredMFA });\n return res(user);\n }, { bypassCache: bypassCache });\n }\n else {\n logger.debug(\"Unable to get the user data because the \" + USER_ADMIN_SCOPE + \" \" +\n \"is not in the scopes of the access token\");\n return res(user);\n }\n });\n })\n .catch(function (e) {\n logger.debug('Failed to sync cache info into memory', e);\n return rej(e);\n });\n });\n };\n /**\n * Get current authenticated user\n * @param {CurrentUserOpts} - options for getting the current user\n * @return - A promise resolves to current authenticated CognitoUser if success\n */\n AuthClass.prototype.currentAuthenticatedUser = function (params) {\n return __awaiter(this, void 0, void 0, function () {\n var federatedUser, e_5, user, e_6;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('getting current authenticated user');\n federatedUser = null;\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_5 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_5);\n throw e_5;\n case 4:\n try {\n federatedUser = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user;\n }\n catch (e) {\n logger.debug('cannot load federated user from auth storage');\n }\n if (!federatedUser) return [3 /*break*/, 5];\n this.user = federatedUser;\n logger.debug('get current authenticated federated user', this.user);\n return [2 /*return*/, this.user];\n case 5:\n logger.debug('get current authenticated userpool user');\n user = null;\n _a.label = 6;\n case 6:\n _a.trys.push([6, 8, , 9]);\n return [4 /*yield*/, this.currentUserPoolUser(params)];\n case 7:\n user = _a.sent();\n return [3 /*break*/, 9];\n case 8:\n e_6 = _a.sent();\n if (e_6 === 'No userPool') {\n logger.error('Cannot get the current user because the user pool is missing. ' +\n 'Please make sure the Auth module is configured with a valid Cognito User Pool ID');\n }\n logger.debug('The user is not authenticated by the error', e_6);\n throw 'not authenticated';\n case 9:\n this.user = user;\n return [2 /*return*/, this.user];\n }\n });\n });\n };\n /**\n * Get current user's session\n * @return - A promise resolves to session object if success\n */\n AuthClass.prototype.currentSession = function () {\n var that = this;\n logger.debug('Getting current session');\n // Purposely not calling the reject method here because we don't need a console error\n if (!this.userPool) {\n return Promise.reject();\n }\n return new Promise(function (res, rej) {\n that\n .currentUserPoolUser()\n .then(function (user) {\n that\n .userSession(user)\n .then(function (session) {\n res(session);\n return;\n })\n .catch(function (e) {\n logger.debug('Failed to get the current session', e);\n rej(e);\n return;\n });\n })\n .catch(function (e) {\n logger.debug('Failed to get the current user', e);\n rej(e);\n return;\n });\n });\n };\n /**\n * Get the corresponding user session\n * @param {Object} user - The CognitoUser object\n * @return - A promise resolves to the session\n */\n AuthClass.prototype.userSession = function (user) {\n if (!user) {\n logger.debug('the user is null');\n return this.rejectAuthError(AuthErrorTypes.NoUserSession);\n }\n return new Promise(function (resolve, reject) {\n logger.debug('Getting the session from this user:', user);\n user.getSession(function (err, session) {\n if (err) {\n logger.debug('Failed to get the session from user', user);\n reject(err);\n return;\n }\n else {\n logger.debug('Succeed to get the user session', session);\n resolve(session);\n return;\n }\n });\n });\n };\n /**\n * Get authenticated credentials of current user.\n * @return - A promise resolves to be current user's credentials\n */\n AuthClass.prototype.currentUserCredentials = function () {\n return __awaiter(this, void 0, void 0, function () {\n var that, e_7, federatedInfo;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n that = this;\n logger.debug('Getting current user credentials');\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_7 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_7);\n throw e_7;\n case 4:\n federatedInfo = null;\n try {\n federatedInfo = JSON.parse(this._storage.getItem('aws-amplify-federatedInfo'));\n }\n catch (e) {\n logger.debug('failed to get or parse item aws-amplify-federatedInfo', e);\n }\n if (federatedInfo) {\n // refresh the jwt token here if necessary\n return [2 /*return*/, Credentials.refreshFederatedToken(federatedInfo)];\n }\n else {\n return [2 /*return*/, this.currentSession()\n .then(function (session) {\n logger.debug('getting session success', session);\n return Credentials.set(session, 'session');\n })\n .catch(function (error) {\n logger.debug('getting session failed', error);\n return Credentials.set(null, 'guest');\n })];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.currentCredentials = function () {\n logger.debug('getting current credentials');\n return Credentials.get();\n };\n /**\n * Initiate an attribute confirmation request\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attributes to be verified\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyUserAttribute = function (user, attr, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n return new Promise(function (resolve, reject) {\n user.getAttributeVerificationCode(attr, {\n onSuccess: function () {\n return resolve();\n },\n onFailure: function (err) {\n return reject(err);\n },\n clientMetadata: clientMetadata,\n });\n });\n };\n /**\n * Confirm an attribute using a confirmation code\n * @param {Object} user - The CognitoUser\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyUserAttributeSubmit = function (user, attr, code) {\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n return new Promise(function (resolve, reject) {\n user.verifyAttribute(attr, code, {\n onSuccess: function (data) {\n resolve(data);\n return;\n },\n onFailure: function (err) {\n reject(err);\n return;\n },\n });\n });\n };\n AuthClass.prototype.verifyCurrentUserAttribute = function (attr) {\n var that = this;\n return that\n .currentUserPoolUser()\n .then(function (user) { return that.verifyUserAttribute(user, attr); });\n };\n /**\n * Confirm current user's attribute using a confirmation code\n * @param {Object} attr - The attribute to be verified\n * @param {String} code - The confirmation code\n * @return - A promise resolves to callback data if success\n */\n AuthClass.prototype.verifyCurrentUserAttributeSubmit = function (attr, code) {\n var that = this;\n return that\n .currentUserPoolUser()\n .then(function (user) { return that.verifyUserAttributeSubmit(user, attr, code); });\n };\n AuthClass.prototype.cognitoIdentitySignOut = function (opts, user) {\n return __awaiter(this, void 0, void 0, function () {\n var e_8, isSignedInHostedUI;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this._storageSync];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n e_8 = _a.sent();\n logger.debug('Failed to sync cache info into memory', e_8);\n throw e_8;\n case 3:\n isSignedInHostedUI = this._oAuthHandler &&\n this._storage.getItem('amplify-signin-with-hostedUI') === 'true';\n return [2 /*return*/, new Promise(function (res, rej) {\n if (opts && opts.global) {\n logger.debug('user global sign out', user);\n // in order to use global signout\n // we must validate the user as an authenticated user by using getSession\n user.getSession(function (err, result) {\n if (err) {\n logger.debug('failed to get the user session', err);\n return rej(err);\n }\n user.globalSignOut({\n onSuccess: function (data) {\n logger.debug('global sign out success');\n if (isSignedInHostedUI) {\n return res(_this._oAuthHandler.signOut());\n }\n else {\n return res();\n }\n },\n onFailure: function (err) {\n logger.debug('global sign out failed', err);\n return rej(err);\n },\n });\n });\n }\n else {\n logger.debug('user sign out', user);\n user.signOut();\n if (isSignedInHostedUI) {\n return res(_this._oAuthHandler.signOut());\n }\n else {\n return res();\n }\n }\n })];\n }\n });\n });\n };\n /**\n * Sign out method\n * @\n * @return - A promise resolved if success\n */\n AuthClass.prototype.signOut = function (opts) {\n return __awaiter(this, void 0, void 0, function () {\n var e_9, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, this.cleanCachedItems()];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n e_9 = _a.sent();\n logger.debug('failed to clear cached items');\n return [3 /*break*/, 3];\n case 3:\n if (!this.userPool) return [3 /*break*/, 7];\n user = this.userPool.getCurrentUser();\n if (!user) return [3 /*break*/, 5];\n return [4 /*yield*/, this.cognitoIdentitySignOut(opts, user)];\n case 4:\n _a.sent();\n return [3 /*break*/, 6];\n case 5:\n logger.debug('no current Cognito user');\n _a.label = 6;\n case 6: return [3 /*break*/, 8];\n case 7:\n logger.debug('no Congito User pool');\n _a.label = 8;\n case 8:\n /**\n * Note for future refactor - no reliable way to get username with\n * Cognito User Pools vs Identity when federating with Social Providers\n * This is why we need a well structured session object that can be inspected\n * and information passed back in the message below for Hub dispatch\n */\n dispatchAuthEvent('signOut', this.user, \"A user has been signed out\");\n this.user = null;\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.cleanCachedItems = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: \n // clear cognito cached item\n return [4 /*yield*/, Credentials.clear()];\n case 1:\n // clear cognito cached item\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Change a password for an authenticated user\n * @param {Object} user - The CognitoUser object\n * @param {String} oldPassword - the current password\n * @param {String} newPassword - the requested new password\n * @return - A promise resolves if success\n */\n AuthClass.prototype.changePassword = function (user, oldPassword, newPassword, clientMetadata) {\n var _this = this;\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n return new Promise(function (resolve, reject) {\n _this.userSession(user).then(function (session) {\n user.changePassword(oldPassword, newPassword, function (err, data) {\n if (err) {\n logger.debug('change password failure', err);\n return reject(err);\n }\n else {\n return resolve(data);\n }\n }, clientMetadata);\n });\n });\n };\n /**\n * Initiate a forgot password request\n * @param {String} username - the username to change password\n * @return - A promise resolves if success\n */\n AuthClass.prototype.forgotPassword = function (username, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.forgotPassword({\n onSuccess: function () {\n resolve();\n return;\n },\n onFailure: function (err) {\n logger.debug('forgot password failure', err);\n dispatchAuthEvent('forgotPassword_failure', err, username + \" forgotPassword failed\");\n reject(err);\n return;\n },\n inputVerificationCode: function (data) {\n dispatchAuthEvent('forgotPassword', user, username + \" has initiated forgot password flow\");\n resolve(data);\n return;\n },\n }, clientMetadata);\n });\n };\n /**\n * Confirm a new password using a confirmation Code\n * @param {String} username - The username\n * @param {String} code - The confirmation code\n * @param {String} password - The new password\n * @return - A promise that resolves if success\n */\n AuthClass.prototype.forgotPasswordSubmit = function (username, code, password, clientMetadata) {\n if (clientMetadata === void 0) { clientMetadata = this._config.clientMetadata; }\n if (!this.userPool) {\n return this.rejectNoUserPool();\n }\n if (!username) {\n return this.rejectAuthError(AuthErrorTypes.EmptyUsername);\n }\n if (!code) {\n return this.rejectAuthError(AuthErrorTypes.EmptyCode);\n }\n if (!password) {\n return this.rejectAuthError(AuthErrorTypes.EmptyPassword);\n }\n var user = this.createCognitoUser(username);\n return new Promise(function (resolve, reject) {\n user.confirmPassword(code, password, {\n onSuccess: function () {\n dispatchAuthEvent('forgotPasswordSubmit', user, username + \" forgotPasswordSubmit successful\");\n resolve();\n return;\n },\n onFailure: function (err) {\n dispatchAuthEvent('forgotPasswordSubmit_failure', err, username + \" forgotPasswordSubmit failed\");\n reject(err);\n return;\n },\n }, clientMetadata);\n });\n };\n /**\n * Get user information\n * @async\n * @return {Object }- current User's information\n */\n AuthClass.prototype.currentUserInfo = function () {\n return __awaiter(this, void 0, void 0, function () {\n var source, user, attributes, userAttrs, credentials, e_10, info, err_1, user;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n source = Credentials.getCredSource();\n if (!(!source || source === 'aws' || source === 'userPool')) return [3 /*break*/, 9];\n return [4 /*yield*/, this.currentUserPoolUser().catch(function (err) {\n return logger.debug(err);\n })];\n case 1:\n user = _a.sent();\n if (!user) {\n return [2 /*return*/, null];\n }\n _a.label = 2;\n case 2:\n _a.trys.push([2, 8, , 9]);\n return [4 /*yield*/, this.userAttributes(user)];\n case 3:\n attributes = _a.sent();\n userAttrs = this.attributesToObject(attributes);\n credentials = null;\n _a.label = 4;\n case 4:\n _a.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.currentCredentials()];\n case 5:\n credentials = _a.sent();\n return [3 /*break*/, 7];\n case 6:\n e_10 = _a.sent();\n logger.debug('Failed to retrieve credentials while getting current user info', e_10);\n return [3 /*break*/, 7];\n case 7:\n info = {\n id: credentials ? credentials.identityId : undefined,\n username: user.getUsername(),\n attributes: userAttrs,\n };\n return [2 /*return*/, info];\n case 8:\n err_1 = _a.sent();\n logger.debug('currentUserInfo error', err_1);\n return [2 /*return*/, {}];\n case 9:\n if (source === 'federated') {\n user = this.user;\n return [2 /*return*/, user ? user : {}];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AuthClass.prototype.federatedSignIn = function (providerOrOptions, response, user) {\n return __awaiter(this, void 0, void 0, function () {\n var options, provider, customState, client_id, redirect_uri, provider, loggedInUser, token, identity_id, expires_at, credentials, currentUser;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation requires either a User Pool or Identity Pool in config\");\n }\n // Ensure backwards compatability\n if (typeof providerOrOptions === 'undefined') {\n if (this._config.identityPoolId && !this._config.userPoolId) {\n throw new Error(\"Federation with Identity Pools requires tokens passed as arguments\");\n }\n }\n if (!(isFederatedSignInOptions(providerOrOptions) ||\n isFederatedSignInOptionsCustom(providerOrOptions) ||\n typeof providerOrOptions === 'undefined')) return [3 /*break*/, 1];\n options = providerOrOptions || {\n provider: CognitoHostedUIIdentityProvider.Cognito,\n };\n provider = isFederatedSignInOptions(options)\n ? options.provider\n : options.customProvider;\n customState = isFederatedSignInOptions(options)\n ? options.customState\n : options.customState;\n if (this._config.userPoolId) {\n client_id = isCognitoHostedOpts(this._config.oauth)\n ? this._config.userPoolWebClientId\n : this._config.oauth.clientID;\n redirect_uri = isCognitoHostedOpts(this._config.oauth)\n ? this._config.oauth.redirectSignIn\n : this._config.oauth.redirectUri;\n this._oAuthHandler.oauthSignIn(this._config.oauth.responseType, this._config.oauth.domain, redirect_uri, client_id, provider, customState);\n }\n return [3 /*break*/, 4];\n case 1:\n provider = providerOrOptions;\n // To check if the user is already logged in\n try {\n loggedInUser = JSON.stringify(JSON.parse(this._storage.getItem('aws-amplify-federatedInfo')).user);\n if (loggedInUser) {\n logger.warn(\"There is already a signed in user: \" + loggedInUser + \" in your app.\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tYou should not call Auth.federatedSignIn method again as it may cause unexpected behavior.\");\n }\n }\n catch (e) { }\n token = response.token, identity_id = response.identity_id, expires_at = response.expires_at;\n return [4 /*yield*/, Credentials.set({ provider: provider, token: token, identity_id: identity_id, user: user, expires_at: expires_at }, 'federation')];\n case 2:\n credentials = _a.sent();\n return [4 /*yield*/, this.currentAuthenticatedUser()];\n case 3:\n currentUser = _a.sent();\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.username + \" has been signed in\");\n logger.debug('federated sign in credentials', credentials);\n return [2 /*return*/, credentials];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Used to complete the OAuth flow with or without the Cognito Hosted UI\n * @param {String} URL - optional parameter for customers to pass in the response URL\n */\n AuthClass.prototype._handleAuthResponse = function (URL) {\n return __awaiter(this, void 0, void 0, function () {\n var currentUrl, hasCodeOrError, hasTokenOrError, _a, accessToken, idToken, refreshToken, state, session, credentials, isCustomStateIncluded, currentUser, customState, err_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this._config.userPoolId) {\n throw new Error(\"OAuth responses require a User Pool defined in config\");\n }\n dispatchAuthEvent('parsingCallbackUrl', { url: URL }, \"The callback url is being parsed\");\n currentUrl = URL || (JS.browserOrNode().isBrowser ? window.location.href : '');\n hasCodeOrError = !!(parse(currentUrl).query || '')\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .find(function (_a) {\n var _b = __read(_a, 1), k = _b[0];\n return k === 'code' || k === 'error';\n });\n hasTokenOrError = !!(parse(currentUrl).hash || '#')\n .substr(1)\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .find(function (_a) {\n var _b = __read(_a, 1), k = _b[0];\n return k === 'access_token' || k === 'error';\n });\n if (!(hasCodeOrError || hasTokenOrError)) return [3 /*break*/, 6];\n this._storage.setItem('amplify-redirected-from-hosted-ui', 'true');\n _b.label = 1;\n case 1:\n _b.trys.push([1, 5, , 6]);\n return [4 /*yield*/, this._oAuthHandler.handleAuthResponse(currentUrl)];\n case 2:\n _a = _b.sent(), accessToken = _a.accessToken, idToken = _a.idToken, refreshToken = _a.refreshToken, state = _a.state;\n session = new CognitoUserSession({\n IdToken: new CognitoIdToken({ IdToken: idToken }),\n RefreshToken: new CognitoRefreshToken({ RefreshToken: refreshToken }),\n AccessToken: new CognitoAccessToken({ AccessToken: accessToken }),\n });\n credentials = void 0;\n if (!this._config.identityPoolId) return [3 /*break*/, 4];\n return [4 /*yield*/, Credentials.set(session, 'session')];\n case 3:\n credentials = _b.sent();\n logger.debug('AWS credentials', credentials);\n _b.label = 4;\n case 4:\n isCustomStateIncluded = /-/.test(state);\n currentUser = this.createCognitoUser(session.getIdToken().decodePayload()['cognito:username']);\n dispatchAuthEvent('signIn', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in\");\n dispatchAuthEvent('cognitoHostedUI', currentUser, \"A user \" + currentUser.getUsername() + \" has been signed in via Cognito Hosted UI\");\n if (isCustomStateIncluded) {\n customState = state\n .split('-')\n .splice(1)\n .join('-');\n dispatchAuthEvent('customOAuthState', customState, \"State for user \" + currentUser.getUsername());\n }\n // This calls cacheTokens() in Cognito SDK\n currentUser.setSignInUserSession(session);\n //#endregion\n if (window && typeof window.history !== 'undefined') {\n window.history.replaceState({}, null, this._config.oauth.redirectSignIn);\n }\n return [2 /*return*/, credentials];\n case 5:\n err_2 = _b.sent();\n logger.debug('Error in cognito hosted auth response', err_2);\n dispatchAuthEvent('signIn_failure', err_2, \"The OAuth response flow failed\");\n dispatchAuthEvent('cognitoHostedUI_failure', err_2, \"A failure occurred when returning to the Cognito Hosted UI\");\n dispatchAuthEvent('customState_failure', err_2, \"A failure occurred when returning state\");\n return [3 /*break*/, 6];\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n AuthClass.prototype.essentialCredentials = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated,\n };\n };\n AuthClass.prototype.attributesToObject = function (attributes) {\n var obj = {};\n if (attributes) {\n attributes.map(function (attribute) {\n if (attribute.Value === 'true') {\n obj[attribute.Name] = true;\n }\n else if (attribute.Value === 'false') {\n obj[attribute.Name] = false;\n }\n else {\n obj[attribute.Name] = attribute.Value;\n }\n });\n }\n return obj;\n };\n AuthClass.prototype.createCognitoUser = function (username) {\n var userData = {\n Username: username,\n Pool: this.userPool,\n };\n userData.Storage = this._storage;\n var authenticationFlowType = this._config.authenticationFlowType;\n var user = new CognitoUser(userData);\n if (authenticationFlowType) {\n user.setAuthenticationFlowType(authenticationFlowType);\n }\n return user;\n };\n AuthClass.prototype._isValidAuthStorage = function (obj) {\n // We need to check if the obj has the functions of Storage\n return (!!obj &&\n typeof obj.getItem === 'function' &&\n typeof obj.setItem === 'function' &&\n typeof obj.removeItem === 'function' &&\n typeof obj.clear === 'function');\n };\n AuthClass.prototype.noUserPoolErrorHandler = function (config) {\n if (config) {\n if (!config.userPoolId || !config.identityPoolId) {\n return AuthErrorTypes.MissingAuthConfig;\n }\n }\n return AuthErrorTypes.NoConfig;\n };\n AuthClass.prototype.rejectAuthError = function (type) {\n return Promise.reject(new AuthError(type));\n };\n AuthClass.prototype.rejectNoUserPool = function () {\n var type = this.noUserPoolErrorHandler(this._config);\n return Promise.reject(new NoUserPoolError(type));\n };\n return AuthClass;\n}());\nexport { AuthClass };\nexport var Auth = new AuthClass(null);\n//# sourceMappingURL=Auth.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar SELF = '_self';\nexport var launchUri = function (url) {\n var windowProxy = window.open(url, SELF);\n if (windowProxy) {\n return Promise.resolve(windowProxy);\n }\n else {\n return Promise.reject();\n }\n};\n//# sourceMappingURL=urlOpener.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { parse } from 'url'; // Used for OAuth parsing of Cognito Hosted UI\nimport { launchUri } from './urlOpener';\nimport * as oAuthStorage from './oauthStorage';\nimport { isCognitoHostedOpts, CognitoHostedUIIdentityProvider, } from '../types/Auth';\nimport { ConsoleLogger as Logger, Hub } from '@aws-amplify/core';\nimport sha256 from 'crypto-js/sha256';\nimport Base64 from 'crypto-js/enc-base64';\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchAuthEvent = function (event, data, message) {\n Hub.dispatch('auth', { event: event, data: data, message: message }, 'Auth', AMPLIFY_SYMBOL);\n};\nvar logger = new Logger('OAuth');\nvar OAuth = /** @class */ (function () {\n function OAuth(_a) {\n var config = _a.config, cognitoClientId = _a.cognitoClientId, _b = _a.scopes, scopes = _b === void 0 ? [] : _b;\n this._urlOpener = config.urlOpener || launchUri;\n this._config = config;\n this._cognitoClientId = cognitoClientId;\n this._scopes = scopes;\n }\n OAuth.prototype.oauthSignIn = function (responseType, domain, redirectSignIn, clientId, provider, customState) {\n if (responseType === void 0) { responseType = 'code'; }\n if (provider === void 0) { provider = CognitoHostedUIIdentityProvider.Cognito; }\n var generatedState = this._generateState(32);\n var state = customState\n ? generatedState + \"-\" + customState\n : generatedState;\n oAuthStorage.setState(encodeURIComponent(state));\n var pkce_key = this._generateRandom(128);\n oAuthStorage.setPKCE(pkce_key);\n var code_challenge = this._generateChallenge(pkce_key);\n var code_challenge_method = 'S256';\n var queryString = Object.entries(__assign(__assign({ redirect_uri: redirectSignIn, response_type: responseType, client_id: clientId, identity_provider: provider, scopes: this._scopes, state: state }, (responseType === 'code' ? { code_challenge: code_challenge } : {})), (responseType === 'code' ? { code_challenge_method: code_challenge_method } : {})))\n .map(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n })\n .join('&');\n var URL = \"https://\" + domain + \"/oauth2/authorize?\" + queryString;\n logger.debug(\"Redirecting to \" + URL);\n this._urlOpener(URL, redirectSignIn);\n };\n OAuth.prototype._handleCodeFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var code, oAuthTokenEndpoint, client_id, redirect_uri, code_verifier, oAuthTokenBody, body, _a, access_token, refresh_token, id_token, error;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n code = (parse(currentUrl).query || '')\n .split('&')\n .map(function (pairings) { return pairings.split('='); })\n .reduce(function (accum, _a) {\n var _b;\n var _c = __read(_a, 2), k = _c[0], v = _c[1];\n return (__assign(__assign({}, accum), (_b = {}, _b[k] = v, _b)));\n }, { code: undefined }).code;\n if (!code) {\n return [2 /*return*/];\n }\n oAuthTokenEndpoint = 'https://' + this._config.domain + '/oauth2/token';\n dispatchAuthEvent('codeFlow', {}, \"Retrieving tokens from \" + oAuthTokenEndpoint);\n client_id = isCognitoHostedOpts(this._config)\n ? this._cognitoClientId\n : this._config.clientID;\n redirect_uri = isCognitoHostedOpts(this._config)\n ? this._config.redirectSignIn\n : this._config.redirectUri;\n code_verifier = oAuthStorage.getPKCE();\n oAuthTokenBody = __assign({ grant_type: 'authorization_code', code: code,\n client_id: client_id,\n redirect_uri: redirect_uri }, (code_verifier ? { code_verifier: code_verifier } : {}));\n logger.debug(\"Calling token endpoint: \" + oAuthTokenEndpoint + \" with\", oAuthTokenBody);\n body = Object.entries(oAuthTokenBody)\n .map(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return encodeURIComponent(k) + \"=\" + encodeURIComponent(v);\n })\n .join('&');\n return [4 /*yield*/, fetch(oAuthTokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body,\n })];\n case 1: return [4 /*yield*/, (_b.sent()).json()];\n case 2:\n _a = _b.sent(), access_token = _a.access_token, refresh_token = _a.refresh_token, id_token = _a.id_token, error = _a.error;\n if (error) {\n throw new Error(error);\n }\n return [2 /*return*/, {\n accessToken: access_token,\n refreshToken: refresh_token,\n idToken: id_token,\n }];\n }\n });\n });\n };\n OAuth.prototype._handleImplicitFlow = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, id_token, access_token;\n return __generator(this, function (_b) {\n _a = parse(currentUrl)\n .hash.substr(1) // Remove # from returned code\n .split('&')\n .map(function (pairings) { return pairings.split('='); })\n .reduce(function (accum, _a) {\n var _b;\n var _c = __read(_a, 2), k = _c[0], v = _c[1];\n return (__assign(__assign({}, accum), (_b = {}, _b[k] = v, _b)));\n }, {\n id_token: undefined,\n access_token: undefined,\n }), id_token = _a.id_token, access_token = _a.access_token;\n dispatchAuthEvent('implicitFlow', {}, \"Got tokens from \" + currentUrl);\n logger.debug(\"Retrieving implicit tokens from \" + currentUrl + \" with\");\n return [2 /*return*/, {\n accessToken: access_token,\n idToken: id_token,\n refreshToken: null,\n }];\n });\n });\n };\n OAuth.prototype.handleAuthResponse = function (currentUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var urlParams, error, error_description, state, _a, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 5, , 6]);\n urlParams = currentUrl\n ? __assign(__assign({}, (parse(currentUrl).hash || '#')\n .substr(1)\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .reduce(function (acc, _a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return ((acc[k] = v), acc);\n }, {})), (parse(currentUrl).query || '')\n .split('&')\n .map(function (entry) { return entry.split('='); })\n .reduce(function (acc, _a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return ((acc[k] = v), acc);\n }, {}))\n : {};\n error = urlParams.error, error_description = urlParams.error_description;\n if (error) {\n throw new Error(error_description);\n }\n state = this._validateState(urlParams);\n logger.debug(\"Starting \" + this._config.responseType + \" flow with \" + currentUrl);\n if (!(this._config.responseType === 'code')) return [3 /*break*/, 2];\n _a = [{}];\n return [4 /*yield*/, this._handleCodeFlow(currentUrl)];\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([(_c.sent())])), { state: state }])];\n case 2:\n _b = [{}];\n return [4 /*yield*/, this._handleImplicitFlow(currentUrl)];\n case 3: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _b.concat([(_c.sent())])), { state: state }])];\n case 4: return [3 /*break*/, 6];\n case 5:\n e_1 = _c.sent();\n logger.error(\"Error handling auth response.\", e_1);\n throw e_1;\n case 6: return [2 /*return*/];\n }\n });\n });\n };\n OAuth.prototype._validateState = function (urlParams) {\n if (!urlParams) {\n return;\n }\n var savedState = oAuthStorage.getState();\n var returnedState = urlParams.state;\n // This is because savedState only exists if the flow was initiated by Amplify\n if (savedState && savedState !== returnedState) {\n throw new Error('Invalid state in OAuth flow');\n }\n return returnedState;\n };\n OAuth.prototype.signOut = function () {\n return __awaiter(this, void 0, void 0, function () {\n var oAuthLogoutEndpoint, client_id, signout_uri;\n return __generator(this, function (_a) {\n oAuthLogoutEndpoint = 'https://' + this._config.domain + '/logout?';\n client_id = isCognitoHostedOpts(this._config)\n ? this._cognitoClientId\n : this._config.oauth.clientID;\n signout_uri = isCognitoHostedOpts(this._config)\n ? this._config.redirectSignOut\n : this._config.returnTo;\n oAuthLogoutEndpoint += Object.entries({\n client_id: client_id,\n logout_uri: encodeURIComponent(signout_uri),\n })\n .map(function (_a) {\n var _b = __read(_a, 2), k = _b[0], v = _b[1];\n return k + \"=\" + v;\n })\n .join('&');\n dispatchAuthEvent('oAuthSignOut', { oAuth: 'signOut' }, \"Signing out from \" + oAuthLogoutEndpoint);\n logger.debug(\"Signing out from \" + oAuthLogoutEndpoint);\n return [2 /*return*/, this._urlOpener(oAuthLogoutEndpoint)];\n });\n });\n };\n OAuth.prototype._generateState = function (length) {\n var result = '';\n var i = length;\n var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (; i > 0; --i)\n result += chars[Math.round(Math.random() * (chars.length - 1))];\n return result;\n };\n OAuth.prototype._generateChallenge = function (code) {\n return this._base64URL(sha256(code));\n };\n OAuth.prototype._base64URL = function (string) {\n return string\n .toString(Base64)\n .replace(/=/g, '')\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_');\n };\n OAuth.prototype._generateRandom = function (size) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';\n var buffer = new Uint8Array(size);\n if (typeof window !== 'undefined' && !!window.crypto) {\n window.crypto.getRandomValues(buffer);\n }\n else {\n for (var i = 0; i < size; i += 1) {\n buffer[i] = (Math.random() * CHARSET.length) | 0;\n }\n }\n return this._bufferToString(buffer);\n };\n OAuth.prototype._bufferToString = function (buffer) {\n var CHARSET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var state = [];\n for (var i = 0; i < buffer.byteLength; i += 1) {\n var index = buffer[i] % CHARSET.length;\n state.push(CHARSET[index]);\n }\n return state.join('');\n };\n return OAuth;\n}());\nexport default OAuth;\n//# sourceMappingURL=OAuth.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nexport var setState = function (state) {\n window.sessionStorage.setItem('oauth_state', state);\n};\nexport var getState = function () {\n var oauth_state = window.sessionStorage.getItem('oauth_state');\n window.sessionStorage.removeItem('oauth_state');\n return oauth_state;\n};\nexport var setPKCE = function (private_key) {\n window.sessionStorage.setItem('ouath_pkce_key', private_key);\n};\nexport var getPKCE = function () {\n var ouath_pkce_key = window.sessionStorage.getItem('ouath_pkce_key');\n window.sessionStorage.removeItem('ouath_pkce_key');\n return ouath_pkce_key;\n};\nexport var clearAll = function () {\n window.sessionStorage.removeItem('ouath_pkce_key');\n window.sessionStorage.removeItem('oauth_state');\n};\n//# sourceMappingURL=oauthStorage.js.map","/*\n * Copyright 2019-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AuthError');\nvar DEFAULT_MSG = 'Authentication Error';\nvar AuthError = /** @class */ (function (_super) {\n __extends(AuthError, _super);\n function AuthError(type) {\n var _this = this;\n var _a = authErrorMessages[type], message = _a.message, log = _a.log;\n _this = _super.call(this, message) || this;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n _this.constructor = AuthError;\n Object.setPrototypeOf(_this, AuthError.prototype);\n _this.name = 'AuthError';\n _this.log = log || message;\n logger.error(_this.log);\n return _this;\n }\n return AuthError;\n}(Error));\nexport { AuthError };\nvar NoUserPoolError = /** @class */ (function (_super) {\n __extends(NoUserPoolError, _super);\n function NoUserPoolError(type) {\n var _this = _super.call(this, type) || this;\n // Hack for making the custom error class work when transpiled to es5\n // TODO: Delete the following 2 lines after we change the build target to >= es2015\n _this.constructor = NoUserPoolError;\n Object.setPrototypeOf(_this, NoUserPoolError.prototype);\n _this.name = 'NoUserPoolError';\n return _this;\n }\n return NoUserPoolError;\n}(AuthError));\nexport { NoUserPoolError };\nexport var authErrorMessages = {\n noConfig: {\n message: DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly.\\n This error is typically caused by one of the following scenarios:\\n\\n 1. Make sure you're passing the awsconfig object to Amplify.configure() in your app's entry point\\n See https://aws-amplify.github.io/docs/js/authentication#configure-your-app for more information\\n \\n 2. There might be multiple conflicting versions of aws-amplify or amplify packages in your node_modules.\\n Try deleting your node_modules folder and reinstalling the dependencies with `yarn install`\\n \",\n },\n missingAuthConfig: {\n message: DEFAULT_MSG,\n log: \"\\n Error: Amplify has not been configured correctly. \\n The configuration object is missing required auth properties. \\n Did you run `amplify push` after adding auth via `amplify add auth`?\\n See https://aws-amplify.github.io/docs/js/authentication#amplify-project-setup for more information\\n \",\n },\n emptyUsername: {\n message: 'Username cannot be empty',\n },\n // TODO: should include a list of valid sign-in types\n invalidUsername: {\n message: 'The username should either be a string or one of the sign in types',\n },\n emptyPassword: {\n message: 'Password cannot be empty',\n },\n emptyCode: {\n message: 'Confirmation code cannot be empty',\n },\n signUpError: {\n message: 'Error creating account',\n log: 'The first parameter should either be non-null string or object',\n },\n noMFA: {\n message: 'No valid MFA method provided',\n },\n invalidMFA: {\n message: 'Invalid MFA type',\n },\n emptyChallengeResponse: {\n message: 'Challenge response cannot be empty',\n },\n noUserSession: {\n message: 'Failed to get the session because the user is empty',\n },\n default: {\n message: DEFAULT_MSG,\n },\n};\n//# sourceMappingURL=Errors.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { JS } from '@aws-amplify/core';\nexport default (function (callback) {\n if (JS.browserOrNode().isBrowser && window.location) {\n var url = window.location.href;\n callback({ url: url });\n }\n else if (JS.browserOrNode().isNode) {\n // continue building on ssr\n (function () { }); // noop\n }\n else {\n throw new Error('Not supported');\n }\n});\n//# sourceMappingURL=urlListener.js.map","(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","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { StorageHelper } from '@aws-amplify/core';\n/**\n * Default cache config\n */\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage(),\n};\n/**\n * return the byte size of the string\n * @param str\n */\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n }\n else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n }\n // trail surrogate\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n return ret;\n}\n/**\n * get current time\n */\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n return _isInteger(value);\n}\nfunction _isInteger(value) {\n return (typeof value === 'number' && isFinite(value) && Math.floor(value) === value);\n}\n/**\n * provide an object as the in-memory cache\n */\nvar store = {};\nvar CacheObject = /** @class */ (function () {\n function CacheObject() {\n }\n CacheObject.clear = function () {\n store = {};\n };\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n return CacheObject;\n}());\nexport { CacheObject };\n//# sourceMappingURL=CacheUtils.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\nvar StorageCache = /** @class */ (function () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (Number(this.config.warningThreshold) > 1 ||\n Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n }\n // set 5MB limit\n var cacheLimit = 5 * 1024 * 1024;\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0,\n };\n ret.byteSize = getByteLength(JSON.stringify(ret));\n // for accurate size\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n return StorageCache;\n}());\nexport { StorageCache };\n/**\n * @deprecated use named import\n */\nexport default StorageCache;\n//# sourceMappingURL=StorageCache.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { defaultConfig, getCurrTime } from './Utils';\nimport { StorageCache } from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\nvar BrowserStorageCacheClass = /** @class */ (function (_super) {\n __extends(BrowserStorageCacheClass, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n function BrowserStorageCacheClass(config) {\n var _this = this;\n var cacheConfig = config\n ? Object.assign({}, defaultConfig, config)\n : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n BrowserStorageCacheClass.prototype._decreaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize - amount).toString());\n };\n /**\n * increase current size of the cache\n *\n * @private\n * @param amount - the amount of the cache szie which need to be increased\n */\n BrowserStorageCacheClass.prototype._increaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize + amount).toString());\n };\n /**\n * update the visited time if item has been visited\n *\n * @private\n * @param item - the item which need to be refreshed\n * @param prefixedKey - the key of the item\n *\n * @return the refreshed item\n */\n BrowserStorageCacheClass.prototype._refreshItem = function (item, prefixedKey) {\n item.visitedTime = getCurrTime();\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n return item;\n };\n /**\n * check wether item is expired\n *\n * @private\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n BrowserStorageCacheClass.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n if (getCurrTime() >= item.expires) {\n return true;\n }\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n BrowserStorageCacheClass.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size\n ? size\n : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n this._decreaseCurSizeInBytes(itemSize);\n // remove the cache item\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n BrowserStorageCacheClass.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n }\n catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n BrowserStorageCacheClass.prototype._sizeToPop = function (itemSize) {\n var spaceItemNeed = this.getCacheCurSize() + itemSize - this.config.capacityInBytes;\n var cacheThresholdSpace = (1 - this.config.warningThreshold) * this.config.capacityInBytes;\n return spaceItemNeed > cacheThresholdSpace\n ? spaceItemNeed\n : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n BrowserStorageCacheClass.prototype._isCacheFull = function (itemSize) {\n return itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\n };\n /**\n * scan the storage and find out all the keys owned by this cache\n * also clean the expired keys while scanning\n *\n * @private\n *\n * @return array of keys\n */\n BrowserStorageCacheClass.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = [];\n // get all keys in Storage\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n }\n // find those items which belong to our cache and also clean those expired items\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n }\n else {\n keys.push(key);\n }\n }\n }\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n BrowserStorageCacheClass.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop;\n // get the items from Storage\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n }\n // first compare priority\n // then compare visited time\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n }\n else if (a.priority < b.priority) {\n return 1;\n }\n else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n }\n else\n return 1;\n }\n });\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n remainedSize -= items[i].byteSize;\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n BrowserStorageCacheClass.prototype.setItem = function (key, value, options) {\n logger.log(\"Set item: key is \" + key + \", value is \" + value + \" with options: \" + options);\n var prefixedKey = this.config.keyPrefix + key;\n // invalid keys\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n var cacheItemOptions = {\n priority: options && options.priority !== undefined\n ? options.priority\n : this.config.defaultPriority,\n expires: options && options.expires !== undefined\n ? options.expires\n : this.config.defaultTTL + getCurrTime(),\n };\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions);\n // check wether this item is too big;\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n // check whether the cache is full\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys();\n // check again and then pop out items\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n this._popOutItems(validKeys, sizeToPop);\n }\n }\n // put item in the cache\n // may failed due to storage full\n this._setItem(prefixedKey, item);\n }\n catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n BrowserStorageCacheClass.prototype.getItem = function (key, options) {\n logger.log(\"Get item: key is \" + key + \" with options \" + options);\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n try {\n ret = this.config.storage.getItem(prefixedKey);\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n ret = null;\n }\n else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n if (options && options.callback !== undefined) {\n var val = options.callback();\n if (val !== null) {\n this.setItem(key, val, options);\n }\n return val;\n }\n return null;\n }\n catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n BrowserStorageCacheClass.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n try {\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n }\n catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n BrowserStorageCacheClass.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n }\n catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n BrowserStorageCacheClass.prototype.getAllKeys = function () {\n var keys = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n BrowserStorageCacheClass.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n BrowserStorageCacheClass.prototype.createInstance = function (config) {\n if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n config.keyPrefix = getCurrTime.toString();\n }\n return new BrowserStorageCacheClass(config);\n };\n return BrowserStorageCacheClass;\n}(StorageCache));\nexport { BrowserStorageCacheClass };\nexport var BrowserStorageCache = new BrowserStorageCacheClass();\n/**\n * @deprecated use named import\n */\nexport default BrowserStorageCache;\n//# sourceMappingURL=BrowserStorageCache.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { RestClient } from './RestClient';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\nvar RestAPIClass = /** @class */ (function () {\n /**\n * Initialize Rest API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function RestAPIClass(options) {\n this._api = null;\n this._options = options;\n Amplify.register(this);\n logger.debug('API Options', this._options);\n }\n RestAPIClass.prototype.getModuleName = function () {\n return 'RestAPI';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n RestAPIClass.prototype.configure = function (options) {\n var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n var opt = __assign(__assign({}, otherOptions), API);\n logger.debug('configure Rest API', { opt: opt });\n if (opt['aws_project_region']) {\n if (opt['aws_cloud_logic_custom']) {\n var custom = opt['aws_cloud_logic_custom'];\n opt.endpoints =\n typeof custom === 'string' ? JSON.parse(custom) : custom;\n }\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {},\n });\n }\n if (!Array.isArray(opt.endpoints)) {\n opt.endpoints = [];\n }\n // Check if endpoints has custom_headers and validate if is a function\n opt.endpoints.forEach(function (endpoint) {\n if (typeof endpoint.custom_header !== 'undefined' &&\n typeof endpoint.custom_header !== 'function') {\n logger.warn('Rest API ' + endpoint.name + ', custom_header should be a function');\n endpoint.custom_header = undefined;\n }\n });\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n RestAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest API instance');\n if (this._options) {\n this._api = new RestClient(this._options);\n return true;\n }\n else {\n return Promise.reject('API not configured');\n }\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.get = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_1, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_1 = _a.sent();\n return [2 /*return*/, Promise.reject(error_1)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.get(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.post = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_2, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_2 = _a.sent();\n return [2 /*return*/, Promise.reject(error_2)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.post(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.put = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_3, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_3 = _a.sent();\n return [2 /*return*/, Promise.reject(error_3)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.put(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.patch = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_4, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_4 = _a.sent();\n return [2 /*return*/, Promise.reject(error_4)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.patch(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.del = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_5, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_5 = _a.sent();\n return [2 /*return*/, Promise.reject(error_5)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.del(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.head = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n var error_6, endpoint;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_6 = _a.sent();\n return [2 /*return*/, Promise.reject(error_6)];\n case 4:\n endpoint = this._api.endpoint(apiName);\n if (endpoint.length === 0) {\n return [2 /*return*/, Promise.reject('API ' + apiName + ' does not exist')];\n }\n return [2 /*return*/, this._api.head(endpoint + path, init)];\n }\n });\n });\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n RestAPIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n var error_7;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.createInstance()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_7 = _a.sent();\n return [2 /*return*/, Promise.reject(error_7)];\n case 4: return [2 /*return*/, this._api.endpoint(apiName)];\n }\n });\n });\n };\n return RestAPIClass;\n}());\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);\n//# sourceMappingURL=RestAPI.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { GraphQLAPIClass, } from '@aws-amplify/api-graphql';\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\nvar APIClass = /** @class */ (function () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this._options = options;\n this._restApi = new RestAPIClass(options);\n this._graphqlApi = new GraphQLAPIClass(options);\n Amplify.register(this);\n logger.debug('API Options', this._options);\n }\n APIClass.prototype.getModuleName = function () {\n return 'API';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n APIClass.prototype.configure = function (options) {\n this._options = Object.assign({}, this._options, options);\n var restAPIConfig = this._restApi.configure(this._options);\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.get = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.get(apiName, path, init)];\n });\n });\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.post = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.post(apiName, path, init)];\n });\n });\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.put = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.put(apiName, path, init)];\n });\n });\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.patch = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.patch(apiName, path, init)];\n });\n });\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.del = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.del(apiName, path, init)];\n });\n });\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n APIClass.prototype.head = function (apiName, path, init) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.head(apiName, path, init)];\n });\n });\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n APIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n APIClass.prototype.graphql = function (options) {\n return this._graphqlApi.graphql(options);\n };\n return APIClass;\n}());\nexport { APIClass };\nexport var API = new APIClass(null);\n//# sourceMappingURL=API.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 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 return target;\n}","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (ga) {\n logger.debug('google api already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar GoogleOAuth = /** @class */ (function () {\n function GoogleOAuth() {\n this.initialized = false;\n this.refreshGoogleToken = this.refreshGoogleToken.bind(this);\n this._refreshGoogleTokenImpl = this._refreshGoogleTokenImpl.bind(this);\n }\n GoogleOAuth.prototype.refreshGoogleToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Google SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshGoogleTokenImpl()];\n }\n });\n });\n };\n GoogleOAuth.prototype._refreshGoogleTokenImpl = function () {\n var ga = null;\n if (browserOrNode().isBrowser)\n ga = window['gapi'] && window['gapi'].auth2 ? window['gapi'].auth2 : null;\n if (!ga) {\n logger.debug('no gapi auth2 available');\n return Promise.reject('no gapi auth2 available');\n }\n return new Promise(function (res, rej) {\n ga.getAuthInstance()\n .then(function (googleAuth) {\n if (!googleAuth) {\n console.log('google Auth undefiend');\n rej('google Auth undefiend');\n }\n var googleUser = googleAuth.currentUser.get();\n // refresh the token\n if (googleUser.isSignedIn()) {\n logger.debug('refreshing the google access token');\n googleUser.reloadAuthResponse().then(function (authResponse) {\n var id_token = authResponse.id_token, expires_at = authResponse.expires_at;\n var profile = googleUser.getBasicProfile();\n var user = {\n email: profile.getEmail(),\n name: profile.getName(),\n };\n res({ token: id_token, expires_at: expires_at });\n });\n }\n else {\n rej('User is not signed in with Google');\n }\n })\n .catch(function (err) {\n logger.debug('Failed to refresh google token', err);\n rej('Failed to refresh google token');\n });\n });\n };\n return GoogleOAuth;\n}());\nexport { GoogleOAuth };\n/**\n * @deprecated use named import\n */\nexport default GoogleOAuth;\n//# sourceMappingURL=GoogleOAuth.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nvar logger = new Logger('CognitoCredentials');\nvar waitForInit = new Promise(function (res, rej) {\n if (!browserOrNode().isBrowser) {\n logger.debug('not in the browser, directly resolved');\n return res();\n }\n var fb = window['FB'];\n if (fb) {\n logger.debug('FB SDK already loaded');\n return res();\n }\n else {\n setTimeout(function () {\n return res();\n }, 2000);\n }\n});\nvar FacebookOAuth = /** @class */ (function () {\n function FacebookOAuth() {\n this.initialized = false;\n this.refreshFacebookToken = this.refreshFacebookToken.bind(this);\n this._refreshFacebookTokenImpl = this._refreshFacebookTokenImpl.bind(this);\n }\n FacebookOAuth.prototype.refreshFacebookToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.initialized) return [3 /*break*/, 2];\n logger.debug('need to wait for the Facebook SDK loaded');\n return [4 /*yield*/, waitForInit];\n case 1:\n _a.sent();\n this.initialized = true;\n logger.debug('finish waiting');\n _a.label = 2;\n case 2: return [2 /*return*/, this._refreshFacebookTokenImpl()];\n }\n });\n });\n };\n FacebookOAuth.prototype._refreshFacebookTokenImpl = function () {\n var fb = null;\n if (browserOrNode().isBrowser)\n fb = window['FB'];\n if (!fb) {\n logger.debug('no fb sdk available');\n return Promise.reject('no fb sdk available');\n }\n return new Promise(function (res, rej) {\n fb.getLoginStatus(function (fbResponse) {\n if (!fbResponse || !fbResponse.authResponse) {\n logger.debug('no response from facebook when refreshing the jwt token');\n rej('no response from facebook when refreshing the jwt token');\n }\n var response = fbResponse.authResponse;\n var accessToken = response.accessToken, expiresIn = response.expiresIn;\n var date = new Date();\n var expires_at = expiresIn * 1000 + date.getTime();\n if (!accessToken) {\n logger.debug('the jwtToken is undefined');\n rej('the jwtToken is undefined');\n }\n res({ token: accessToken, expires_at: expires_at });\n }, { scope: 'public_profile,email' });\n });\n };\n return FacebookOAuth;\n}());\nexport { FacebookOAuth };\n/**\n * @deprecated use named import\n */\nexport default FacebookOAuth;\n//# sourceMappingURL=FacebookOAuth.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { GoogleOAuth as GoogleOAuthClass } from './GoogleOAuth';\nimport { FacebookOAuth as FacebookOAuthClass } from './FacebookOAuth';\nexport var GoogleOAuth = new GoogleOAuthClass();\nexport var FacebookOAuth = new FacebookOAuthClass();\n//# sourceMappingURL=index.js.map","/**\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.HmacSHA256;\n\n}));","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar dataMemory = {};\n/** @class */\nvar MemoryStorage = /** @class */ (function () {\n function MemoryStorage() {\n }\n /**\n * This is used to set a specific item in storage\n * @param {string} key - the key for the item\n * @param {object} value - the value\n * @returns {string} value that was set\n */\n MemoryStorage.setItem = function (key, value) {\n dataMemory[key] = value;\n return dataMemory[key];\n };\n /**\n * This is used to get a specific key from storage\n * @param {string} key - the key for the item\n * This is used to clear the storage\n * @returns {string} the data item\n */\n MemoryStorage.getItem = function (key) {\n return Object.prototype.hasOwnProperty.call(dataMemory, key)\n ? dataMemory[key]\n : undefined;\n };\n /**\n * This is used to remove an item from storage\n * @param {string} key - the key being set\n * @returns {string} value - value that was deleted\n */\n MemoryStorage.removeItem = function (key) {\n return delete dataMemory[key];\n };\n /**\n * This is used to clear the storage\n * @returns {string} nothing\n */\n MemoryStorage.clear = function () {\n dataMemory = {};\n return dataMemory;\n };\n return MemoryStorage;\n}());\nexport { MemoryStorage };\nvar StorageHelper = /** @class */ (function () {\n /**\n * This is used to get a storage object\n * @returns {object} the storage\n */\n function StorageHelper() {\n try {\n this.storageWindow = window.localStorage;\n this.storageWindow.setItem('aws.amplify.test-ls', 1);\n this.storageWindow.removeItem('aws.amplify.test-ls');\n }\n catch (exception) {\n this.storageWindow = MemoryStorage;\n }\n }\n /**\n * This is used to return the storage\n * @returns {object} the storage\n */\n StorageHelper.prototype.getStorage = function () {\n return this.storageWindow;\n };\n return StorageHelper;\n}());\nexport { StorageHelper };\n/**\n * @deprecated use named import\n */\nexport default StorageHelper;\n//# sourceMappingURL=index.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { HttpRequest as __HttpRequest } from \"@aws-sdk/protocol-http\";\nimport { dateToUtcString as __dateToUtcString, extendedEncodeURIComponent as __extendedEncodeURIComponent } from \"@aws-sdk/smithy-client\";\nimport { XmlNode as __XmlNode, XmlText as __XmlText } from \"@aws-sdk/xml-builder\";\nimport { parse as xmlParse } from \"fast-xml-parser\";\nexport function serializeAws_restXmlAbortMultipartUploadCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"AbortMultipartUpload\"\n };\n if (input.UploadId !== undefined) {\n query[\"uploadId\"] = input.UploadId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlCompleteMultipartUploadCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {};\n if (input.UploadId !== undefined) {\n query[\"uploadId\"] = input.UploadId;\n }\n if (input.MultipartUpload !== undefined) {\n contents = serializeAws_restXmlCompletedMultipartUpload(input.MultipartUpload, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlCopyObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.CacheControl !== undefined) {\n headers[\"Cache-Control\"] = input.CacheControl;\n }\n if (input.ContentDisposition !== undefined) {\n headers[\"Content-Disposition\"] = input.ContentDisposition;\n }\n if (input.ContentEncoding !== undefined) {\n headers[\"Content-Encoding\"] = input.ContentEncoding;\n }\n if (input.ContentLanguage !== undefined) {\n headers[\"Content-Language\"] = input.ContentLanguage;\n }\n if (input.ContentType !== undefined) {\n headers[\"Content-Type\"] = input.ContentType;\n }\n if (input.CopySource !== undefined) {\n headers[\"x-amz-copy-source\"] = input.CopySource;\n }\n if (input.CopySourceIfMatch !== undefined) {\n headers[\"x-amz-copy-source-if-match\"] = input.CopySourceIfMatch;\n }\n if (input.CopySourceIfModifiedSince !== undefined) {\n headers[\"x-amz-copy-source-if-modified-since\"] = __dateToUtcString(input.CopySourceIfModifiedSince).toString();\n }\n if (input.CopySourceIfNoneMatch !== undefined) {\n headers[\"x-amz-copy-source-if-none-match\"] = input.CopySourceIfNoneMatch;\n }\n if (input.CopySourceIfUnmodifiedSince !== undefined) {\n headers[\"x-amz-copy-source-if-unmodified-since\"] = __dateToUtcString(input.CopySourceIfUnmodifiedSince).toString();\n }\n if (input.CopySourceSSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-algorithm\"] =\n input.CopySourceSSECustomerAlgorithm;\n }\n if (input.CopySourceSSECustomerKey !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-key\"] =\n input.CopySourceSSECustomerKey;\n }\n if (input.CopySourceSSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-key-MD5\"] =\n input.CopySourceSSECustomerKeyMD5;\n }\n if (input.Expires !== undefined) {\n headers[\"Expires\"] = __dateToUtcString(input.Expires).toString();\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n if (input.MetadataDirective !== undefined) {\n headers[\"x-amz-metadata-directive\"] = input.MetadataDirective;\n }\n if (input.ObjectLockLegalHoldStatus !== undefined) {\n headers[\"x-amz-object-lock-legal-hold\"] = input.ObjectLockLegalHoldStatus;\n }\n if (input.ObjectLockMode !== undefined) {\n headers[\"x-amz-object-lock-mode\"] = input.ObjectLockMode;\n }\n if (input.ObjectLockRetainUntilDate !== undefined) {\n headers[\"x-amz-object-lock-retain-until-date\"] = (input.ObjectLockRetainUntilDate.toISOString().split(\".\")[0] + \"Z\").toString();\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n if (input.SSEKMSEncryptionContext !== undefined) {\n headers[\"x-amz-server-side-encryption-context\"] =\n input.SSEKMSEncryptionContext;\n }\n if (input.SSEKMSKeyId !== undefined) {\n headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] = input.SSEKMSKeyId;\n }\n if (input.ServerSideEncryption !== undefined) {\n headers[\"x-amz-server-side-encryption\"] = input.ServerSideEncryption;\n }\n if (input.StorageClass !== undefined) {\n headers[\"x-amz-storage-class\"] = input.StorageClass;\n }\n if (input.Tagging !== undefined) {\n headers[\"x-amz-tagging\"] = input.Tagging;\n }\n if (input.TaggingDirective !== undefined) {\n headers[\"x-amz-tagging-directive\"] = input.TaggingDirective;\n }\n if (input.WebsiteRedirectLocation !== undefined) {\n headers[\"x-amz-website-redirect-location\"] = input.WebsiteRedirectLocation;\n }\n if (input.Metadata !== undefined) {\n Object.keys(input.Metadata).forEach(function (suffix) {\n headers[\"x-amz-meta-\" + suffix] = input.Metadata[suffix];\n });\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"CopyObject\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlCreateBucketCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWrite !== undefined) {\n headers[\"x-amz-grant-write\"] = input.GrantWrite;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n if (input.ObjectLockEnabledForBucket !== undefined) {\n headers[\"x-amz-bucket-object-lock-enabled\"] = input.ObjectLockEnabledForBucket.toString();\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.CreateBucketConfiguration !== undefined) {\n contents = serializeAws_restXmlCreateBucketConfiguration(input.CreateBucketConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlCreateMultipartUploadCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.CacheControl !== undefined) {\n headers[\"Cache-Control\"] = input.CacheControl;\n }\n if (input.ContentDisposition !== undefined) {\n headers[\"Content-Disposition\"] = input.ContentDisposition;\n }\n if (input.ContentEncoding !== undefined) {\n headers[\"Content-Encoding\"] = input.ContentEncoding;\n }\n if (input.ContentLanguage !== undefined) {\n headers[\"Content-Language\"] = input.ContentLanguage;\n }\n if (input.ContentType !== undefined) {\n headers[\"Content-Type\"] = input.ContentType;\n }\n if (input.Expires !== undefined) {\n headers[\"Expires\"] = __dateToUtcString(input.Expires).toString();\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n if (input.ObjectLockLegalHoldStatus !== undefined) {\n headers[\"x-amz-object-lock-legal-hold\"] = input.ObjectLockLegalHoldStatus;\n }\n if (input.ObjectLockMode !== undefined) {\n headers[\"x-amz-object-lock-mode\"] = input.ObjectLockMode;\n }\n if (input.ObjectLockRetainUntilDate !== undefined) {\n headers[\"x-amz-object-lock-retain-until-date\"] = (input.ObjectLockRetainUntilDate.toISOString().split(\".\")[0] + \"Z\").toString();\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n if (input.SSEKMSEncryptionContext !== undefined) {\n headers[\"x-amz-server-side-encryption-context\"] =\n input.SSEKMSEncryptionContext;\n }\n if (input.SSEKMSKeyId !== undefined) {\n headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] = input.SSEKMSKeyId;\n }\n if (input.ServerSideEncryption !== undefined) {\n headers[\"x-amz-server-side-encryption\"] = input.ServerSideEncryption;\n }\n if (input.StorageClass !== undefined) {\n headers[\"x-amz-storage-class\"] = input.StorageClass;\n }\n if (input.Tagging !== undefined) {\n headers[\"x-amz-tagging\"] = input.Tagging;\n }\n if (input.WebsiteRedirectLocation !== undefined) {\n headers[\"x-amz-website-redirect-location\"] = input.WebsiteRedirectLocation;\n }\n if (input.Metadata !== undefined) {\n Object.keys(input.Metadata).forEach(function (suffix) {\n headers[\"x-amz-meta-\" + suffix] = input.Metadata[suffix];\n });\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n uploads: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketAnalyticsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n analytics: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketCorsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n cors: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketEncryptionCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n encryption: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketInventoryConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n inventory: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketLifecycleCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n lifecycle: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketMetricsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n metrics: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketPolicyCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n policy: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketReplicationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n replication: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n tagging: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteBucketWebsiteCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n website: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.BypassGovernanceRetention !== undefined) {\n headers[\"x-amz-bypass-governance-retention\"] = input.BypassGovernanceRetention.toString();\n }\n if (input.MFA !== undefined) {\n headers[\"x-amz-mfa\"] = input.MFA;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"DeleteObject\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteObjectTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n tagging: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeleteObjectsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.BypassGovernanceRetention !== undefined) {\n headers[\"x-amz-bypass-governance-retention\"] = input.BypassGovernanceRetention.toString();\n }\n if (input.MFA !== undefined) {\n headers[\"x-amz-mfa\"] = input.MFA;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n delete: \"\"\n };\n if (input.Delete !== undefined) {\n contents = serializeAws_restXmlDelete(input.Delete, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlDeletePublicAccessBlockCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n publicAccessBlock: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"DELETE\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketAccelerateConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n accelerate: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketAclCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n acl: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketAnalyticsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n analytics: \"\",\n \"x-id\": \"GetBucketAnalyticsConfiguration\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketCorsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n cors: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketEncryptionCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n encryption: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketInventoryConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n inventory: \"\",\n \"x-id\": \"GetBucketInventoryConfiguration\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketLifecycleConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n lifecycle: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketLocationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n location: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketLoggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n logging: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketMetricsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n metrics: \"\",\n \"x-id\": \"GetBucketMetricsConfiguration\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketNotificationConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n notification: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketPolicyCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n policy: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketPolicyStatusCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n policyStatus: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketReplicationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n replication: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketRequestPaymentCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n requestPayment: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n tagging: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketVersioningCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n versioning: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetBucketWebsiteCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n website: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.IfMatch !== undefined) {\n headers[\"If-Match\"] = input.IfMatch;\n }\n if (input.IfModifiedSince !== undefined) {\n headers[\"If-Modified-Since\"] = __dateToUtcString(input.IfModifiedSince).toString();\n }\n if (input.IfNoneMatch !== undefined) {\n headers[\"If-None-Match\"] = input.IfNoneMatch;\n }\n if (input.IfUnmodifiedSince !== undefined) {\n headers[\"If-Unmodified-Since\"] = __dateToUtcString(input.IfUnmodifiedSince).toString();\n }\n if (input.Range !== undefined) {\n headers[\"Range\"] = input.Range;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"GetObject\"\n };\n if (input.PartNumber !== undefined) {\n query[\"partNumber\"] = input.PartNumber.toString();\n }\n if (input.ResponseCacheControl !== undefined) {\n query[\"response-cache-control\"] = input.ResponseCacheControl;\n }\n if (input.ResponseContentDisposition !== undefined) {\n query[\"response-content-disposition\"] = input.ResponseContentDisposition;\n }\n if (input.ResponseContentEncoding !== undefined) {\n query[\"response-content-encoding\"] = input.ResponseContentEncoding;\n }\n if (input.ResponseContentLanguage !== undefined) {\n query[\"response-content-language\"] = input.ResponseContentLanguage;\n }\n if (input.ResponseContentType !== undefined) {\n query[\"response-content-type\"] = input.ResponseContentType;\n }\n if (input.ResponseExpires !== undefined) {\n query[\"response-expires\"] = (input.ResponseExpires.toISOString().split(\".\")[0] + \"Z\").toString();\n }\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectAclCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n acl: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectLegalHoldCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"legal-hold\": \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectLockConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n \"object-lock\": \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectRetentionCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n retention: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n tagging: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetObjectTorrentCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n torrent: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlGetPublicAccessBlockCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n publicAccessBlock: \"\"\n };\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlHeadBucketCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"HEAD\", headers: headers, path: resolvedPath, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlHeadObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.IfMatch !== undefined) {\n headers[\"If-Match\"] = input.IfMatch;\n }\n if (input.IfModifiedSince !== undefined) {\n headers[\"If-Modified-Since\"] = __dateToUtcString(input.IfModifiedSince).toString();\n }\n if (input.IfNoneMatch !== undefined) {\n headers[\"If-None-Match\"] = input.IfNoneMatch;\n }\n if (input.IfUnmodifiedSince !== undefined) {\n headers[\"If-Unmodified-Since\"] = __dateToUtcString(input.IfUnmodifiedSince).toString();\n }\n if (input.Range !== undefined) {\n headers[\"Range\"] = input.Range;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {};\n if (input.PartNumber !== undefined) {\n query[\"partNumber\"] = input.PartNumber.toString();\n }\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"HEAD\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListBucketAnalyticsConfigurationsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n analytics: \"\",\n \"x-id\": \"ListBucketAnalyticsConfigurations\"\n };\n if (input.ContinuationToken !== undefined) {\n query[\"continuation-token\"] = input.ContinuationToken;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListBucketInventoryConfigurationsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n inventory: \"\",\n \"x-id\": \"ListBucketInventoryConfigurations\"\n };\n if (input.ContinuationToken !== undefined) {\n query[\"continuation-token\"] = input.ContinuationToken;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListBucketMetricsConfigurationsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n metrics: \"\",\n \"x-id\": \"ListBucketMetricsConfigurations\"\n };\n if (input.ContinuationToken !== undefined) {\n query[\"continuation-token\"] = input.ContinuationToken;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListBucketsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/\";\n body = \"\";\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListMultipartUploadsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n uploads: \"\"\n };\n if (input.Delimiter !== undefined) {\n query[\"delimiter\"] = input.Delimiter;\n }\n if (input.EncodingType !== undefined) {\n query[\"encoding-type\"] = input.EncodingType;\n }\n if (input.KeyMarker !== undefined) {\n query[\"key-marker\"] = input.KeyMarker;\n }\n if (input.MaxUploads !== undefined) {\n query[\"max-uploads\"] = input.MaxUploads.toString();\n }\n if (input.Prefix !== undefined) {\n query[\"prefix\"] = input.Prefix;\n }\n if (input.UploadIdMarker !== undefined) {\n query[\"upload-id-marker\"] = input.UploadIdMarker;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListObjectVersionsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n versions: \"\"\n };\n if (input.Delimiter !== undefined) {\n query[\"delimiter\"] = input.Delimiter;\n }\n if (input.EncodingType !== undefined) {\n query[\"encoding-type\"] = input.EncodingType;\n }\n if (input.KeyMarker !== undefined) {\n query[\"key-marker\"] = input.KeyMarker;\n }\n if (input.MaxKeys !== undefined) {\n query[\"max-keys\"] = input.MaxKeys.toString();\n }\n if (input.Prefix !== undefined) {\n query[\"prefix\"] = input.Prefix;\n }\n if (input.VersionIdMarker !== undefined) {\n query[\"version-id-marker\"] = input.VersionIdMarker;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListObjectsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {};\n if (input.Delimiter !== undefined) {\n query[\"delimiter\"] = input.Delimiter;\n }\n if (input.EncodingType !== undefined) {\n query[\"encoding-type\"] = input.EncodingType;\n }\n if (input.Marker !== undefined) {\n query[\"marker\"] = input.Marker;\n }\n if (input.MaxKeys !== undefined) {\n query[\"max-keys\"] = input.MaxKeys.toString();\n }\n if (input.Prefix !== undefined) {\n query[\"prefix\"] = input.Prefix;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListObjectsV2Command(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n \"list-type\": \"2\"\n };\n if (input.ContinuationToken !== undefined) {\n query[\"continuation-token\"] = input.ContinuationToken;\n }\n if (input.Delimiter !== undefined) {\n query[\"delimiter\"] = input.Delimiter;\n }\n if (input.EncodingType !== undefined) {\n query[\"encoding-type\"] = input.EncodingType;\n }\n if (input.FetchOwner !== undefined) {\n query[\"fetch-owner\"] = input.FetchOwner.toString();\n }\n if (input.MaxKeys !== undefined) {\n query[\"max-keys\"] = input.MaxKeys.toString();\n }\n if (input.Prefix !== undefined) {\n query[\"prefix\"] = input.Prefix;\n }\n if (input.StartAfter !== undefined) {\n query[\"start-after\"] = input.StartAfter;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlListPartsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"ListParts\"\n };\n if (input.MaxParts !== undefined) {\n query[\"max-parts\"] = input.MaxParts.toString();\n }\n if (input.PartNumberMarker !== undefined) {\n query[\"part-number-marker\"] = input.PartNumberMarker.toString();\n }\n if (input.UploadId !== undefined) {\n query[\"uploadId\"] = input.UploadId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"GET\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketAccelerateConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n accelerate: \"\"\n };\n if (input.AccelerateConfiguration !== undefined) {\n contents = serializeAws_restXmlAccelerateConfiguration(input.AccelerateConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketAclCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWrite !== undefined) {\n headers[\"x-amz-grant-write\"] = input.GrantWrite;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n acl: \"\"\n };\n if (input.AccessControlPolicy !== undefined) {\n contents = serializeAws_restXmlAccessControlPolicy(input.AccessControlPolicy, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketAnalyticsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n analytics: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n if (input.AnalyticsConfiguration !== undefined) {\n contents = serializeAws_restXmlAnalyticsConfiguration(input.AnalyticsConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketCorsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n cors: \"\"\n };\n if (input.CORSConfiguration !== undefined) {\n contents = serializeAws_restXmlCORSConfiguration(input.CORSConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketEncryptionCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n encryption: \"\"\n };\n if (input.ServerSideEncryptionConfiguration !== undefined) {\n contents = serializeAws_restXmlServerSideEncryptionConfiguration(input.ServerSideEncryptionConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketInventoryConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n inventory: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n if (input.InventoryConfiguration !== undefined) {\n contents = serializeAws_restXmlInventoryConfiguration(input.InventoryConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketLifecycleConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n lifecycle: \"\"\n };\n if (input.LifecycleConfiguration !== undefined) {\n contents = serializeAws_restXmlBucketLifecycleConfiguration(input.LifecycleConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketLoggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n logging: \"\"\n };\n if (input.BucketLoggingStatus !== undefined) {\n contents = serializeAws_restXmlBucketLoggingStatus(input.BucketLoggingStatus, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketMetricsConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n metrics: \"\"\n };\n if (input.Id !== undefined) {\n query[\"id\"] = input.Id;\n }\n if (input.MetricsConfiguration !== undefined) {\n contents = serializeAws_restXmlMetricsConfiguration(input.MetricsConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketNotificationConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n notification: \"\"\n };\n if (input.NotificationConfiguration !== undefined) {\n contents = serializeAws_restXmlNotificationConfiguration(input.NotificationConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketPolicyCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, bodyNode;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ConfirmRemoveSelfBucketAccess !== undefined) {\n headers[\"x-amz-confirm-remove-self-bucket-access\"] = input.ConfirmRemoveSelfBucketAccess.toString();\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n policy: \"\"\n };\n body = '';\n bodyNode = new __XmlNode(\"PutBucketPolicyRequest\");\n bodyNode.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n if (input.Policy !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Policy\")\n .addChildNode(new __XmlText(input.Policy))\n .withName(\"Policy\"));\n }\n body += bodyNode.toString();\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketReplicationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.Token !== undefined) {\n headers[\"x-amz-bucket-object-lock-token\"] = input.Token;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n replication: \"\"\n };\n if (input.ReplicationConfiguration !== undefined) {\n contents = serializeAws_restXmlReplicationConfiguration(input.ReplicationConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketRequestPaymentCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n requestPayment: \"\"\n };\n if (input.RequestPaymentConfiguration !== undefined) {\n contents = serializeAws_restXmlRequestPaymentConfiguration(input.RequestPaymentConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n tagging: \"\"\n };\n if (input.Tagging !== undefined) {\n contents = serializeAws_restXmlTagging(input.Tagging, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketVersioningCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.MFA !== undefined) {\n headers[\"x-amz-mfa\"] = input.MFA;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n versioning: \"\"\n };\n if (input.VersioningConfiguration !== undefined) {\n contents = serializeAws_restXmlVersioningConfiguration(input.VersioningConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutBucketWebsiteCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n website: \"\"\n };\n if (input.WebsiteConfiguration !== undefined) {\n contents = serializeAws_restXmlWebsiteConfiguration(input.WebsiteConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/octet-stream\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.CacheControl !== undefined) {\n headers[\"Cache-Control\"] = input.CacheControl;\n }\n if (input.ContentDisposition !== undefined) {\n headers[\"Content-Disposition\"] = input.ContentDisposition;\n }\n if (input.ContentEncoding !== undefined) {\n headers[\"Content-Encoding\"] = input.ContentEncoding;\n }\n if (input.ContentLanguage !== undefined) {\n headers[\"Content-Language\"] = input.ContentLanguage;\n }\n if (input.ContentLength !== undefined) {\n headers[\"Content-Length\"] = input.ContentLength.toString();\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.ContentType !== undefined) {\n headers[\"Content-Type\"] = input.ContentType;\n }\n if (input.Expires !== undefined) {\n headers[\"Expires\"] = __dateToUtcString(input.Expires).toString();\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n if (input.ObjectLockLegalHoldStatus !== undefined) {\n headers[\"x-amz-object-lock-legal-hold\"] = input.ObjectLockLegalHoldStatus;\n }\n if (input.ObjectLockMode !== undefined) {\n headers[\"x-amz-object-lock-mode\"] = input.ObjectLockMode;\n }\n if (input.ObjectLockRetainUntilDate !== undefined) {\n headers[\"x-amz-object-lock-retain-until-date\"] = (input.ObjectLockRetainUntilDate.toISOString().split(\".\")[0] + \"Z\").toString();\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n if (input.SSEKMSEncryptionContext !== undefined) {\n headers[\"x-amz-server-side-encryption-context\"] =\n input.SSEKMSEncryptionContext;\n }\n if (input.SSEKMSKeyId !== undefined) {\n headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] = input.SSEKMSKeyId;\n }\n if (input.ServerSideEncryption !== undefined) {\n headers[\"x-amz-server-side-encryption\"] = input.ServerSideEncryption;\n }\n if (input.StorageClass !== undefined) {\n headers[\"x-amz-storage-class\"] = input.StorageClass;\n }\n if (input.Tagging !== undefined) {\n headers[\"x-amz-tagging\"] = input.Tagging;\n }\n if (input.WebsiteRedirectLocation !== undefined) {\n headers[\"x-amz-website-redirect-location\"] = input.WebsiteRedirectLocation;\n }\n if (input.Metadata !== undefined) {\n Object.keys(input.Metadata).forEach(function (suffix) {\n headers[\"x-amz-meta-\" + suffix] = input.Metadata[suffix];\n });\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"PutObject\"\n };\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectAclCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ACL !== undefined) {\n headers[\"x-amz-acl\"] = input.ACL;\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.GrantFullControl !== undefined) {\n headers[\"x-amz-grant-full-control\"] = input.GrantFullControl;\n }\n if (input.GrantRead !== undefined) {\n headers[\"x-amz-grant-read\"] = input.GrantRead;\n }\n if (input.GrantReadACP !== undefined) {\n headers[\"x-amz-grant-read-acp\"] = input.GrantReadACP;\n }\n if (input.GrantWrite !== undefined) {\n headers[\"x-amz-grant-write\"] = input.GrantWrite;\n }\n if (input.GrantWriteACP !== undefined) {\n headers[\"x-amz-grant-write-acp\"] = input.GrantWriteACP;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n acl: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n if (input.AccessControlPolicy !== undefined) {\n contents = serializeAws_restXmlAccessControlPolicy(input.AccessControlPolicy, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectLegalHoldCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"legal-hold\": \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n if (input.LegalHold !== undefined) {\n contents = serializeAws_restXmlObjectLockLegalHold(input.LegalHold, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectLockConfigurationCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.Token !== undefined) {\n headers[\"x-amz-bucket-object-lock-token\"] = input.Token;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n \"object-lock\": \"\"\n };\n if (input.ObjectLockConfiguration !== undefined) {\n contents = serializeAws_restXmlObjectLockConfiguration(input.ObjectLockConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectRetentionCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.BypassGovernanceRetention !== undefined) {\n headers[\"x-amz-bypass-governance-retention\"] = input.BypassGovernanceRetention.toString();\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n retention: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n if (input.Retention !== undefined) {\n contents = serializeAws_restXmlObjectLockRetention(input.Retention, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutObjectTaggingCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n tagging: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n if (input.Tagging !== undefined) {\n contents = serializeAws_restXmlTagging(input.Tagging, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlPutPublicAccessBlockCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n resolvedPath = \"/{Bucket}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n query = {\n publicAccessBlock: \"\"\n };\n if (input.PublicAccessBlockConfiguration !== undefined) {\n contents = serializeAws_restXmlPublicAccessBlockConfiguration(input.PublicAccessBlockConfiguration, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlRestoreObjectCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n restore: \"\"\n };\n if (input.VersionId !== undefined) {\n query[\"versionId\"] = input.VersionId;\n }\n if (input.RestoreRequest !== undefined) {\n contents = serializeAws_restXmlRestoreRequest(input.RestoreRequest, context);\n body = '';\n contents.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n body += contents.toString();\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlSelectObjectContentCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, bodyNode;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/xml\";\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n select: \"\",\n \"select-type\": \"2\"\n };\n body = '';\n bodyNode = new __XmlNode(\"SelectObjectContentRequest\");\n bodyNode.addAttribute(\"xmlns\", \"http://s3.amazonaws.com/doc/2006-03-01/\");\n if (input.Expression !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Expression\")\n .addChildNode(new __XmlText(input.Expression))\n .withName(\"Expression\"));\n }\n if (input.ExpressionType !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ExpressionType\")\n .addChildNode(new __XmlText(input.ExpressionType))\n .withName(\"ExpressionType\"));\n }\n if (input.InputSerialization !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInputSerialization(input.InputSerialization, context).withName(\"InputSerialization\"));\n }\n if (input.OutputSerialization !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlOutputSerialization(input.OutputSerialization, context).withName(\"OutputSerialization\"));\n }\n if (input.RequestProgress !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlRequestProgress(input.RequestProgress, context).withName(\"RequestProgress\"));\n }\n if (input.ScanRange !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlScanRange(input.ScanRange, context).withName(\"ScanRange\"));\n }\n body += bodyNode.toString();\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlUploadPartCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body, contents;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/octet-stream\";\n if (input.ContentLength !== undefined) {\n headers[\"Content-Length\"] = input.ContentLength.toString();\n }\n if (input.ContentMD5 !== undefined) {\n headers[\"Content-MD5\"] = input.ContentMD5;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"UploadPart\"\n };\n if (input.PartNumber !== undefined) {\n query[\"partNumber\"] = input.PartNumber.toString();\n }\n if (input.UploadId !== undefined) {\n query[\"uploadId\"] = input.UploadId;\n }\n if (input.Body !== undefined) {\n contents = input.Body;\n body = contents;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function serializeAws_restXmlUploadPartCopyCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, resolvedPath, labelValue, labelValue, query, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"\";\n if (input.CopySource !== undefined) {\n headers[\"x-amz-copy-source\"] = input.CopySource;\n }\n if (input.CopySourceIfMatch !== undefined) {\n headers[\"x-amz-copy-source-if-match\"] = input.CopySourceIfMatch;\n }\n if (input.CopySourceIfModifiedSince !== undefined) {\n headers[\"x-amz-copy-source-if-modified-since\"] = __dateToUtcString(input.CopySourceIfModifiedSince).toString();\n }\n if (input.CopySourceIfNoneMatch !== undefined) {\n headers[\"x-amz-copy-source-if-none-match\"] = input.CopySourceIfNoneMatch;\n }\n if (input.CopySourceIfUnmodifiedSince !== undefined) {\n headers[\"x-amz-copy-source-if-unmodified-since\"] = __dateToUtcString(input.CopySourceIfUnmodifiedSince).toString();\n }\n if (input.CopySourceRange !== undefined) {\n headers[\"x-amz-copy-source-range\"] = input.CopySourceRange;\n }\n if (input.CopySourceSSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-algorithm\"] =\n input.CopySourceSSECustomerAlgorithm;\n }\n if (input.CopySourceSSECustomerKey !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-key\"] =\n input.CopySourceSSECustomerKey;\n }\n if (input.CopySourceSSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-copy-source-server-side-encryption-customer-key-MD5\"] =\n input.CopySourceSSECustomerKeyMD5;\n }\n if (input.RequestPayer !== undefined) {\n headers[\"x-amz-request-payer\"] = input.RequestPayer;\n }\n if (input.SSECustomerAlgorithm !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-algorithm\"] =\n input.SSECustomerAlgorithm;\n }\n if (input.SSECustomerKey !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key\"] = input.SSECustomerKey;\n }\n if (input.SSECustomerKeyMD5 !== undefined) {\n headers[\"x-amz-server-side-encryption-customer-key-MD5\"] =\n input.SSECustomerKeyMD5;\n }\n resolvedPath = \"/{Bucket}/{Key+}\";\n if (input.Bucket !== undefined) {\n labelValue = input.Bucket;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Bucket.\");\n }\n resolvedPath = resolvedPath.replace(\"{Bucket}\", __extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Bucket.\");\n }\n if (input.Key !== undefined) {\n labelValue = input.Key;\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: Key.\");\n }\n resolvedPath = resolvedPath.replace(\"{Key+}\", labelValue\n .split(\"/\")\n .map(function (segment) { return __extendedEncodeURIComponent(segment); })\n .join(\"/\"));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: Key.\");\n }\n query = {\n \"x-id\": \"UploadPartCopy\"\n };\n if (input.PartNumber !== undefined) {\n query[\"partNumber\"] = input.PartNumber.toString();\n }\n if (input.UploadId !== undefined) {\n query[\"uploadId\"] = input.UploadId;\n }\n return [2 /*return*/, new __HttpRequest(__assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"PUT\", headers: headers, path: resolvedPath, query: query, body: body }))];\n });\n });\n}\nexport function deserializeAws_restXmlAbortMultipartUploadCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlAbortMultipartUploadCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"AbortMultipartUploadOutput\",\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlAbortMultipartUploadCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchUpload\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchUpload\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchUploadResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlCompleteMultipartUploadCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlCompleteMultipartUploadCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"CompleteMultipartUploadOutput\",\n Bucket: undefined,\n ETag: undefined,\n Expiration: undefined,\n Key: undefined,\n Location: undefined,\n RequestCharged: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined\n };\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"ETag\"] !== undefined) {\n contents.ETag = data[\"ETag\"];\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"Location\"] !== undefined) {\n contents.Location = data[\"Location\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlCompleteMultipartUploadCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlCopyObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlCopyObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"CopyObjectOutput\",\n CopyObjectResult: undefined,\n CopySourceVersionId: undefined,\n Expiration: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined\n };\n if (output.headers[\"x-amz-copy-source-version-id\"] !== undefined) {\n contents.CopySourceVersionId =\n output.headers[\"x-amz-copy-source-version-id\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext =\n output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.CopyObjectResult = deserializeAws_restXmlCopyObjectResult(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlCopyObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"ObjectNotInActiveTierError\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#ObjectNotInActiveTierError\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlObjectNotInActiveTierErrorResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlCreateBucketCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlCreateBucketCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"CreateBucketOutput\",\n Location: undefined\n };\n if (output.headers[\"location\"] !== undefined) {\n contents.Location = output.headers[\"location\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlCreateBucketCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, _e, parsedBody, message;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _f.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"BucketAlreadyExists\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#BucketAlreadyExists\": return [3 /*break*/, 2];\n case \"BucketAlreadyOwnedByYou\": return [3 /*break*/, 4];\n case \"com.amazonaws.s3#BucketAlreadyOwnedByYou\": return [3 /*break*/, 4];\n }\n return [3 /*break*/, 6];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlBucketAlreadyExistsResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_f.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 7];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_restXmlBucketAlreadyOwnedByYouResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_f.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 7];\n case 6:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _f.label = 7;\n case 7:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlCreateMultipartUploadCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlCreateMultipartUploadCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"CreateMultipartUploadOutput\",\n AbortDate: undefined,\n AbortRuleId: undefined,\n Bucket: undefined,\n Key: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n UploadId: undefined\n };\n if (output.headers[\"x-amz-abort-date\"] !== undefined) {\n contents.AbortDate = new Date(output.headers[\"x-amz-abort-date\"]);\n }\n if (output.headers[\"x-amz-abort-rule-id\"] !== undefined) {\n contents.AbortRuleId = output.headers[\"x-amz-abort-rule-id\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext =\n output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"UploadId\"] !== undefined) {\n contents.UploadId = data[\"UploadId\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlCreateMultipartUploadCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketAnalyticsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketCorsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketCorsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketCorsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketEncryptionCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketEncryptionCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketEncryptionCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketInventoryConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketInventoryConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketInventoryConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketLifecycleCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketLifecycleCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketLifecycleCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketMetricsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketMetricsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketMetricsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketPolicyCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketPolicyCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketPolicyCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketReplicationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketReplicationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketReplicationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteBucketWebsiteCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteBucketWebsiteCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteBucketWebsiteCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"DeleteObjectOutput\",\n DeleteMarker: undefined,\n RequestCharged: undefined,\n VersionId: undefined\n };\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteObjectTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteObjectTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"DeleteObjectTaggingOutput\",\n VersionId: undefined\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteObjectTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeleteObjectsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeleteObjectsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"DeleteObjectsOutput\",\n Deleted: undefined,\n Errors: undefined,\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.Deleted === \"\") {\n contents.Deleted = [];\n }\n if (data[\"Deleted\"] !== undefined) {\n wrappedItem = data[\"Deleted\"] instanceof Array ? data[\"Deleted\"] : [data[\"Deleted\"]];\n contents.Deleted = deserializeAws_restXmlDeletedObjects(wrappedItem, context);\n }\n if (data.Error === \"\") {\n contents.Errors = [];\n }\n if (data[\"Error\"] !== undefined) {\n wrappedItem = data[\"Error\"] instanceof Array ? data[\"Error\"] : [data[\"Error\"]];\n contents.Errors = deserializeAws_restXmlErrors(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeleteObjectsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlDeletePublicAccessBlockCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 204 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlDeletePublicAccessBlockCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlDeletePublicAccessBlockCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketAccelerateConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketAccelerateConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketAccelerateConfigurationOutput\",\n Status: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Status\"] !== undefined) {\n contents.Status = data[\"Status\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketAccelerateConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketAclCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketAclCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketAclOutput\",\n Grants: undefined,\n Owner: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.AccessControlList === \"\") {\n contents.Grants = [];\n }\n if (data[\"AccessControlList\"] !== undefined &&\n data[\"AccessControlList\"][\"Grant\"] !== undefined) {\n wrappedItem = data[\"AccessControlList\"][\"Grant\"] instanceof Array\n ? data[\"AccessControlList\"][\"Grant\"]\n : [data[\"AccessControlList\"][\"Grant\"]];\n contents.Grants = deserializeAws_restXmlGrants(wrappedItem, context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketAclCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketAnalyticsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketAnalyticsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketAnalyticsConfigurationOutput\",\n AnalyticsConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.AnalyticsConfiguration = deserializeAws_restXmlAnalyticsConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketAnalyticsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketCorsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketCorsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketCorsOutput\",\n CORSRules: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.CORSRule === \"\") {\n contents.CORSRules = [];\n }\n if (data[\"CORSRule\"] !== undefined) {\n wrappedItem = data[\"CORSRule\"] instanceof Array ? data[\"CORSRule\"] : [data[\"CORSRule\"]];\n contents.CORSRules = deserializeAws_restXmlCORSRules(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketCorsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketEncryptionCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketEncryptionCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketEncryptionOutput\",\n ServerSideEncryptionConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.ServerSideEncryptionConfiguration = deserializeAws_restXmlServerSideEncryptionConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketEncryptionCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketInventoryConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketInventoryConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketInventoryConfigurationOutput\",\n InventoryConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.InventoryConfiguration = deserializeAws_restXmlInventoryConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketInventoryConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketLifecycleConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketLifecycleConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketLifecycleConfigurationOutput\",\n Rules: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.Rule === \"\") {\n contents.Rules = [];\n }\n if (data[\"Rule\"] !== undefined) {\n wrappedItem = data[\"Rule\"] instanceof Array ? data[\"Rule\"] : [data[\"Rule\"]];\n contents.Rules = deserializeAws_restXmlLifecycleRules(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketLifecycleConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketLocationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketLocationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketLocationOutput\",\n LocationConstraint: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"LocationConstraint\"] !== undefined) {\n contents.LocationConstraint = data[\"LocationConstraint\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketLocationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketLoggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketLoggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketLoggingOutput\",\n LoggingEnabled: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"LoggingEnabled\"] !== undefined) {\n contents.LoggingEnabled = deserializeAws_restXmlLoggingEnabled(data[\"LoggingEnabled\"], context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketLoggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketMetricsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketMetricsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketMetricsConfigurationOutput\",\n MetricsConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.MetricsConfiguration = deserializeAws_restXmlMetricsConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketMetricsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketNotificationConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketNotificationConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"NotificationConfiguration\",\n LambdaFunctionConfigurations: undefined,\n QueueConfigurations: undefined,\n TopicConfigurations: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.CloudFunctionConfiguration === \"\") {\n contents.LambdaFunctionConfigurations = [];\n }\n if (data[\"CloudFunctionConfiguration\"] !== undefined) {\n wrappedItem = data[\"CloudFunctionConfiguration\"] instanceof Array\n ? data[\"CloudFunctionConfiguration\"]\n : [data[\"CloudFunctionConfiguration\"]];\n contents.LambdaFunctionConfigurations = deserializeAws_restXmlLambdaFunctionConfigurationList(wrappedItem, context);\n }\n if (data.QueueConfiguration === \"\") {\n contents.QueueConfigurations = [];\n }\n if (data[\"QueueConfiguration\"] !== undefined) {\n wrappedItem = data[\"QueueConfiguration\"] instanceof Array\n ? data[\"QueueConfiguration\"]\n : [data[\"QueueConfiguration\"]];\n contents.QueueConfigurations = deserializeAws_restXmlQueueConfigurationList(wrappedItem, context);\n }\n if (data.TopicConfiguration === \"\") {\n contents.TopicConfigurations = [];\n }\n if (data[\"TopicConfiguration\"] !== undefined) {\n wrappedItem = data[\"TopicConfiguration\"] instanceof Array\n ? data[\"TopicConfiguration\"]\n : [data[\"TopicConfiguration\"]];\n contents.TopicConfigurations = deserializeAws_restXmlTopicConfigurationList(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketNotificationConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketPolicyCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketPolicyCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketPolicyOutput\",\n Policy: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Policy\"] !== undefined) {\n contents.Policy = data[\"Policy\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketPolicyCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketPolicyStatusCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketPolicyStatusCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketPolicyStatusOutput\",\n PolicyStatus: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.PolicyStatus = deserializeAws_restXmlPolicyStatus(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketPolicyStatusCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketReplicationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketReplicationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketReplicationOutput\",\n ReplicationConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.ReplicationConfiguration = deserializeAws_restXmlReplicationConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketReplicationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketRequestPaymentCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketRequestPaymentCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketRequestPaymentOutput\",\n Payer: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Payer\"] !== undefined) {\n contents.Payer = data[\"Payer\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketRequestPaymentCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketTaggingOutput\",\n TagSet: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.TagSet === \"\") {\n contents.TagSet = [];\n }\n if (data[\"TagSet\"] !== undefined && data[\"TagSet\"][\"Tag\"] !== undefined) {\n wrappedItem = data[\"TagSet\"][\"Tag\"] instanceof Array\n ? data[\"TagSet\"][\"Tag\"]\n : [data[\"TagSet\"][\"Tag\"]];\n contents.TagSet = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketVersioningCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketVersioningCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketVersioningOutput\",\n MFADelete: undefined,\n Status: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"MfaDelete\"] !== undefined) {\n contents.MFADelete = data[\"MfaDelete\"];\n }\n if (data[\"Status\"] !== undefined) {\n contents.Status = data[\"Status\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketVersioningCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetBucketWebsiteCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetBucketWebsiteCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetBucketWebsiteOutput\",\n ErrorDocument: undefined,\n IndexDocument: undefined,\n RedirectAllRequestsTo: undefined,\n RoutingRules: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"ErrorDocument\"] !== undefined) {\n contents.ErrorDocument = deserializeAws_restXmlErrorDocument(data[\"ErrorDocument\"], context);\n }\n if (data[\"IndexDocument\"] !== undefined) {\n contents.IndexDocument = deserializeAws_restXmlIndexDocument(data[\"IndexDocument\"], context);\n }\n if (data[\"RedirectAllRequestsTo\"] !== undefined) {\n contents.RedirectAllRequestsTo = deserializeAws_restXmlRedirectAllRequestsTo(data[\"RedirectAllRequestsTo\"], context);\n }\n if (data.RoutingRules === \"\") {\n contents.RoutingRules = [];\n }\n if (data[\"RoutingRules\"] !== undefined &&\n data[\"RoutingRules\"][\"RoutingRule\"] !== undefined) {\n wrappedItem = data[\"RoutingRules\"][\"RoutingRule\"] instanceof Array\n ? data[\"RoutingRules\"][\"RoutingRule\"]\n : [data[\"RoutingRules\"][\"RoutingRule\"]];\n contents.RoutingRules = deserializeAws_restXmlRoutingRules(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetBucketWebsiteCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectOutput\",\n AcceptRanges: undefined,\n Body: undefined,\n CacheControl: undefined,\n ContentDisposition: undefined,\n ContentEncoding: undefined,\n ContentLanguage: undefined,\n ContentLength: undefined,\n ContentRange: undefined,\n ContentType: undefined,\n DeleteMarker: undefined,\n ETag: undefined,\n Expiration: undefined,\n Expires: undefined,\n LastModified: undefined,\n Metadata: undefined,\n MissingMeta: undefined,\n ObjectLockLegalHoldStatus: undefined,\n ObjectLockMode: undefined,\n ObjectLockRetainUntilDate: undefined,\n PartsCount: undefined,\n ReplicationStatus: undefined,\n RequestCharged: undefined,\n Restore: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n StorageClass: undefined,\n TagCount: undefined,\n VersionId: undefined,\n WebsiteRedirectLocation: undefined\n };\n if (output.headers[\"accept-ranges\"] !== undefined) {\n contents.AcceptRanges = output.headers[\"accept-ranges\"];\n }\n if (output.headers[\"cache-control\"] !== undefined) {\n contents.CacheControl = output.headers[\"cache-control\"];\n }\n if (output.headers[\"content-disposition\"] !== undefined) {\n contents.ContentDisposition = output.headers[\"content-disposition\"];\n }\n if (output.headers[\"content-encoding\"] !== undefined) {\n contents.ContentEncoding = output.headers[\"content-encoding\"];\n }\n if (output.headers[\"content-language\"] !== undefined) {\n contents.ContentLanguage = output.headers[\"content-language\"];\n }\n if (output.headers[\"content-length\"] !== undefined) {\n contents.ContentLength = parseInt(output.headers[\"content-length\"], 10);\n }\n if (output.headers[\"content-range\"] !== undefined) {\n contents.ContentRange = output.headers[\"content-range\"];\n }\n if (output.headers[\"content-type\"] !== undefined) {\n contents.ContentType = output.headers[\"content-type\"];\n }\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"expires\"] !== undefined) {\n contents.Expires = new Date(output.headers[\"expires\"]);\n }\n if (output.headers[\"last-modified\"] !== undefined) {\n contents.LastModified = new Date(output.headers[\"last-modified\"]);\n }\n if (output.headers[\"x-amz-missing-meta\"] !== undefined) {\n contents.MissingMeta = parseInt(output.headers[\"x-amz-missing-meta\"], 10);\n }\n if (output.headers[\"x-amz-object-lock-legal-hold\"] !== undefined) {\n contents.ObjectLockLegalHoldStatus =\n output.headers[\"x-amz-object-lock-legal-hold\"];\n }\n if (output.headers[\"x-amz-object-lock-mode\"] !== undefined) {\n contents.ObjectLockMode = output.headers[\"x-amz-object-lock-mode\"];\n }\n if (output.headers[\"x-amz-object-lock-retain-until-date\"] !== undefined) {\n contents.ObjectLockRetainUntilDate = new Date(output.headers[\"x-amz-object-lock-retain-until-date\"]);\n }\n if (output.headers[\"x-amz-mp-parts-count\"] !== undefined) {\n contents.PartsCount = parseInt(output.headers[\"x-amz-mp-parts-count\"], 10);\n }\n if (output.headers[\"x-amz-replication-status\"] !== undefined) {\n contents.ReplicationStatus = output.headers[\"x-amz-replication-status\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-restore\"] !== undefined) {\n contents.Restore = output.headers[\"x-amz-restore\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-storage-class\"] !== undefined) {\n contents.StorageClass = output.headers[\"x-amz-storage-class\"];\n }\n if (output.headers[\"x-amz-tagging-count\"] !== undefined) {\n contents.TagCount = parseInt(output.headers[\"x-amz-tagging-count\"], 10);\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-website-redirect-location\"] !== undefined) {\n contents.WebsiteRedirectLocation =\n output.headers[\"x-amz-website-redirect-location\"];\n }\n Object.keys(output.headers).forEach(function (header) {\n if (contents.Metadata === undefined) {\n contents.Metadata = {};\n }\n if (header.startsWith(\"x-amz-meta-\")) {\n contents.Metadata[header.substring(11)] = output.headers[header];\n }\n });\n data = output.body;\n contents.Body = data;\n return [2 /*return*/, Promise.resolve(contents)];\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchKey\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchKey\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectAclCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectAclCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectAclOutput\",\n Grants: undefined,\n Owner: undefined,\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.AccessControlList === \"\") {\n contents.Grants = [];\n }\n if (data[\"AccessControlList\"] !== undefined &&\n data[\"AccessControlList\"][\"Grant\"] !== undefined) {\n wrappedItem = data[\"AccessControlList\"][\"Grant\"] instanceof Array\n ? data[\"AccessControlList\"][\"Grant\"]\n : [data[\"AccessControlList\"][\"Grant\"]];\n contents.Grants = deserializeAws_restXmlGrants(wrappedItem, context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectAclCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchKey\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchKey\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectLegalHoldCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectLegalHoldCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectLegalHoldOutput\",\n LegalHold: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.LegalHold = deserializeAws_restXmlObjectLockLegalHold(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectLegalHoldCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectLockConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectLockConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectLockConfigurationOutput\",\n ObjectLockConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.ObjectLockConfiguration = deserializeAws_restXmlObjectLockConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectLockConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectRetentionCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectRetentionCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectRetentionOutput\",\n Retention: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.Retention = deserializeAws_restXmlObjectLockRetention(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectRetentionCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectTaggingOutput\",\n TagSet: undefined,\n VersionId: undefined\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.TagSet === \"\") {\n contents.TagSet = [];\n }\n if (data[\"TagSet\"] !== undefined && data[\"TagSet\"][\"Tag\"] !== undefined) {\n wrappedItem = data[\"TagSet\"][\"Tag\"] instanceof Array\n ? data[\"TagSet\"][\"Tag\"]\n : [data[\"TagSet\"][\"Tag\"]];\n contents.TagSet = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetObjectTorrentCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetObjectTorrentCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetObjectTorrentOutput\",\n Body: undefined,\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n data = output.body;\n contents.Body = data;\n return [2 /*return*/, Promise.resolve(contents)];\n });\n });\n}\nfunction deserializeAws_restXmlGetObjectTorrentCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlGetPublicAccessBlockCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlGetPublicAccessBlockCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"GetPublicAccessBlockOutput\",\n PublicAccessBlockConfiguration: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.PublicAccessBlockConfiguration = deserializeAws_restXmlPublicAccessBlockConfiguration(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlGetPublicAccessBlockCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlHeadBucketCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlHeadBucketCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlHeadBucketCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchBucket\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchBucket\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlHeadObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlHeadObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"HeadObjectOutput\",\n AcceptRanges: undefined,\n CacheControl: undefined,\n ContentDisposition: undefined,\n ContentEncoding: undefined,\n ContentLanguage: undefined,\n ContentLength: undefined,\n ContentType: undefined,\n DeleteMarker: undefined,\n ETag: undefined,\n Expiration: undefined,\n Expires: undefined,\n LastModified: undefined,\n Metadata: undefined,\n MissingMeta: undefined,\n ObjectLockLegalHoldStatus: undefined,\n ObjectLockMode: undefined,\n ObjectLockRetainUntilDate: undefined,\n PartsCount: undefined,\n ReplicationStatus: undefined,\n RequestCharged: undefined,\n Restore: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n StorageClass: undefined,\n VersionId: undefined,\n WebsiteRedirectLocation: undefined\n };\n if (output.headers[\"accept-ranges\"] !== undefined) {\n contents.AcceptRanges = output.headers[\"accept-ranges\"];\n }\n if (output.headers[\"cache-control\"] !== undefined) {\n contents.CacheControl = output.headers[\"cache-control\"];\n }\n if (output.headers[\"content-disposition\"] !== undefined) {\n contents.ContentDisposition = output.headers[\"content-disposition\"];\n }\n if (output.headers[\"content-encoding\"] !== undefined) {\n contents.ContentEncoding = output.headers[\"content-encoding\"];\n }\n if (output.headers[\"content-language\"] !== undefined) {\n contents.ContentLanguage = output.headers[\"content-language\"];\n }\n if (output.headers[\"content-length\"] !== undefined) {\n contents.ContentLength = parseInt(output.headers[\"content-length\"], 10);\n }\n if (output.headers[\"content-type\"] !== undefined) {\n contents.ContentType = output.headers[\"content-type\"];\n }\n if (output.headers[\"x-amz-delete-marker\"] !== undefined) {\n contents.DeleteMarker = output.headers[\"x-amz-delete-marker\"] === \"true\";\n }\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"expires\"] !== undefined) {\n contents.Expires = new Date(output.headers[\"expires\"]);\n }\n if (output.headers[\"last-modified\"] !== undefined) {\n contents.LastModified = new Date(output.headers[\"last-modified\"]);\n }\n if (output.headers[\"x-amz-missing-meta\"] !== undefined) {\n contents.MissingMeta = parseInt(output.headers[\"x-amz-missing-meta\"], 10);\n }\n if (output.headers[\"x-amz-object-lock-legal-hold\"] !== undefined) {\n contents.ObjectLockLegalHoldStatus =\n output.headers[\"x-amz-object-lock-legal-hold\"];\n }\n if (output.headers[\"x-amz-object-lock-mode\"] !== undefined) {\n contents.ObjectLockMode = output.headers[\"x-amz-object-lock-mode\"];\n }\n if (output.headers[\"x-amz-object-lock-retain-until-date\"] !== undefined) {\n contents.ObjectLockRetainUntilDate = new Date(output.headers[\"x-amz-object-lock-retain-until-date\"]);\n }\n if (output.headers[\"x-amz-mp-parts-count\"] !== undefined) {\n contents.PartsCount = parseInt(output.headers[\"x-amz-mp-parts-count\"], 10);\n }\n if (output.headers[\"x-amz-replication-status\"] !== undefined) {\n contents.ReplicationStatus = output.headers[\"x-amz-replication-status\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-restore\"] !== undefined) {\n contents.Restore = output.headers[\"x-amz-restore\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-storage-class\"] !== undefined) {\n contents.StorageClass = output.headers[\"x-amz-storage-class\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n if (output.headers[\"x-amz-website-redirect-location\"] !== undefined) {\n contents.WebsiteRedirectLocation =\n output.headers[\"x-amz-website-redirect-location\"];\n }\n Object.keys(output.headers).forEach(function (header) {\n if (contents.Metadata === undefined) {\n contents.Metadata = {};\n }\n if (header.startsWith(\"x-amz-meta-\")) {\n contents.Metadata[header.substring(11)] = output.headers[header];\n }\n });\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlHeadObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchKey\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchKey\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListBucketAnalyticsConfigurationsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListBucketAnalyticsConfigurationsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListBucketAnalyticsConfigurationsOutput\",\n AnalyticsConfigurationList: undefined,\n ContinuationToken: undefined,\n IsTruncated: undefined,\n NextContinuationToken: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.AnalyticsConfiguration === \"\") {\n contents.AnalyticsConfigurationList = [];\n }\n if (data[\"AnalyticsConfiguration\"] !== undefined) {\n wrappedItem = data[\"AnalyticsConfiguration\"] instanceof Array\n ? data[\"AnalyticsConfiguration\"]\n : [data[\"AnalyticsConfiguration\"]];\n contents.AnalyticsConfigurationList = deserializeAws_restXmlAnalyticsConfigurationList(wrappedItem, context);\n }\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListBucketAnalyticsConfigurationsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListBucketInventoryConfigurationsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListBucketInventoryConfigurationsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListBucketInventoryConfigurationsOutput\",\n ContinuationToken: undefined,\n InventoryConfigurationList: undefined,\n IsTruncated: undefined,\n NextContinuationToken: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data.InventoryConfiguration === \"\") {\n contents.InventoryConfigurationList = [];\n }\n if (data[\"InventoryConfiguration\"] !== undefined) {\n wrappedItem = data[\"InventoryConfiguration\"] instanceof Array\n ? data[\"InventoryConfiguration\"]\n : [data[\"InventoryConfiguration\"]];\n contents.InventoryConfigurationList = deserializeAws_restXmlInventoryConfigurationList(wrappedItem, context);\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListBucketInventoryConfigurationsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListBucketMetricsConfigurationsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListBucketMetricsConfigurationsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListBucketMetricsConfigurationsOutput\",\n ContinuationToken: undefined,\n IsTruncated: undefined,\n MetricsConfigurationList: undefined,\n NextContinuationToken: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data.MetricsConfiguration === \"\") {\n contents.MetricsConfigurationList = [];\n }\n if (data[\"MetricsConfiguration\"] !== undefined) {\n wrappedItem = data[\"MetricsConfiguration\"] instanceof Array\n ? data[\"MetricsConfiguration\"]\n : [data[\"MetricsConfiguration\"]];\n contents.MetricsConfigurationList = deserializeAws_restXmlMetricsConfigurationList(wrappedItem, context);\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListBucketMetricsConfigurationsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListBucketsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListBucketsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListBucketsOutput\",\n Buckets: undefined,\n Owner: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.Buckets === \"\") {\n contents.Buckets = [];\n }\n if (data[\"Buckets\"] !== undefined &&\n data[\"Buckets\"][\"Bucket\"] !== undefined) {\n wrappedItem = data[\"Buckets\"][\"Bucket\"] instanceof Array\n ? data[\"Buckets\"][\"Bucket\"]\n : [data[\"Buckets\"][\"Bucket\"]];\n contents.Buckets = deserializeAws_restXmlBuckets(wrappedItem, context);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListBucketsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListMultipartUploadsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListMultipartUploadsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListMultipartUploadsOutput\",\n Bucket: undefined,\n CommonPrefixes: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyMarker: undefined,\n MaxUploads: undefined,\n NextKeyMarker: undefined,\n NextUploadIdMarker: undefined,\n Prefix: undefined,\n UploadIdMarker: undefined,\n Uploads: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n wrappedItem = data[\"CommonPrefixes\"] instanceof Array\n ? data[\"CommonPrefixes\"]\n : [data[\"CommonPrefixes\"]];\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(wrappedItem, context);\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyMarker\"] !== undefined) {\n contents.KeyMarker = data[\"KeyMarker\"];\n }\n if (data[\"MaxUploads\"] !== undefined) {\n contents.MaxUploads = parseInt(data[\"MaxUploads\"]);\n }\n if (data[\"NextKeyMarker\"] !== undefined) {\n contents.NextKeyMarker = data[\"NextKeyMarker\"];\n }\n if (data[\"NextUploadIdMarker\"] !== undefined) {\n contents.NextUploadIdMarker = data[\"NextUploadIdMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"UploadIdMarker\"] !== undefined) {\n contents.UploadIdMarker = data[\"UploadIdMarker\"];\n }\n if (data.Upload === \"\") {\n contents.Uploads = [];\n }\n if (data[\"Upload\"] !== undefined) {\n wrappedItem = data[\"Upload\"] instanceof Array ? data[\"Upload\"] : [data[\"Upload\"]];\n contents.Uploads = deserializeAws_restXmlMultipartUploadList(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListMultipartUploadsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListObjectVersionsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListObjectVersionsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListObjectVersionsOutput\",\n CommonPrefixes: undefined,\n DeleteMarkers: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyMarker: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextKeyMarker: undefined,\n NextVersionIdMarker: undefined,\n Prefix: undefined,\n VersionIdMarker: undefined,\n Versions: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n wrappedItem = data[\"CommonPrefixes\"] instanceof Array\n ? data[\"CommonPrefixes\"]\n : [data[\"CommonPrefixes\"]];\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(wrappedItem, context);\n }\n if (data.DeleteMarker === \"\") {\n contents.DeleteMarkers = [];\n }\n if (data[\"DeleteMarker\"] !== undefined) {\n wrappedItem = data[\"DeleteMarker\"] instanceof Array\n ? data[\"DeleteMarker\"]\n : [data[\"DeleteMarker\"]];\n contents.DeleteMarkers = deserializeAws_restXmlDeleteMarkers(wrappedItem, context);\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyMarker\"] !== undefined) {\n contents.KeyMarker = data[\"KeyMarker\"];\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextKeyMarker\"] !== undefined) {\n contents.NextKeyMarker = data[\"NextKeyMarker\"];\n }\n if (data[\"NextVersionIdMarker\"] !== undefined) {\n contents.NextVersionIdMarker = data[\"NextVersionIdMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"VersionIdMarker\"] !== undefined) {\n contents.VersionIdMarker = data[\"VersionIdMarker\"];\n }\n if (data.Version === \"\") {\n contents.Versions = [];\n }\n if (data[\"Version\"] !== undefined) {\n wrappedItem = data[\"Version\"] instanceof Array ? data[\"Version\"] : [data[\"Version\"]];\n contents.Versions = deserializeAws_restXmlObjectVersionList(wrappedItem, context);\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListObjectVersionsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListObjectsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListObjectsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListObjectsOutput\",\n CommonPrefixes: undefined,\n Contents: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n Marker: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextMarker: undefined,\n Prefix: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n wrappedItem = data[\"CommonPrefixes\"] instanceof Array\n ? data[\"CommonPrefixes\"]\n : [data[\"CommonPrefixes\"]];\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(wrappedItem, context);\n }\n if (data.Contents === \"\") {\n contents.Contents = [];\n }\n if (data[\"Contents\"] !== undefined) {\n wrappedItem = data[\"Contents\"] instanceof Array ? data[\"Contents\"] : [data[\"Contents\"]];\n contents.Contents = deserializeAws_restXmlObjectList(wrappedItem, context);\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"Marker\"] !== undefined) {\n contents.Marker = data[\"Marker\"];\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextMarker\"] !== undefined) {\n contents.NextMarker = data[\"NextMarker\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListObjectsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchBucket\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchBucket\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListObjectsV2Command(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListObjectsV2CommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListObjectsV2Output\",\n CommonPrefixes: undefined,\n Contents: undefined,\n ContinuationToken: undefined,\n Delimiter: undefined,\n EncodingType: undefined,\n IsTruncated: undefined,\n KeyCount: undefined,\n MaxKeys: undefined,\n Name: undefined,\n NextContinuationToken: undefined,\n Prefix: undefined,\n StartAfter: undefined\n };\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data.CommonPrefixes === \"\") {\n contents.CommonPrefixes = [];\n }\n if (data[\"CommonPrefixes\"] !== undefined) {\n wrappedItem = data[\"CommonPrefixes\"] instanceof Array\n ? data[\"CommonPrefixes\"]\n : [data[\"CommonPrefixes\"]];\n contents.CommonPrefixes = deserializeAws_restXmlCommonPrefixList(wrappedItem, context);\n }\n if (data.Contents === \"\") {\n contents.Contents = [];\n }\n if (data[\"Contents\"] !== undefined) {\n wrappedItem = data[\"Contents\"] instanceof Array ? data[\"Contents\"] : [data[\"Contents\"]];\n contents.Contents = deserializeAws_restXmlObjectList(wrappedItem, context);\n }\n if (data[\"ContinuationToken\"] !== undefined) {\n contents.ContinuationToken = data[\"ContinuationToken\"];\n }\n if (data[\"Delimiter\"] !== undefined) {\n contents.Delimiter = data[\"Delimiter\"];\n }\n if (data[\"EncodingType\"] !== undefined) {\n contents.EncodingType = data[\"EncodingType\"];\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"KeyCount\"] !== undefined) {\n contents.KeyCount = parseInt(data[\"KeyCount\"]);\n }\n if (data[\"MaxKeys\"] !== undefined) {\n contents.MaxKeys = parseInt(data[\"MaxKeys\"]);\n }\n if (data[\"Name\"] !== undefined) {\n contents.Name = data[\"Name\"];\n }\n if (data[\"NextContinuationToken\"] !== undefined) {\n contents.NextContinuationToken = data[\"NextContinuationToken\"];\n }\n if (data[\"Prefix\"] !== undefined) {\n contents.Prefix = data[\"Prefix\"];\n }\n if (data[\"StartAfter\"] !== undefined) {\n contents.StartAfter = data[\"StartAfter\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListObjectsV2CommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchBucket\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchBucket\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchBucketResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlListPartsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data, wrappedItem;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlListPartsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"ListPartsOutput\",\n AbortDate: undefined,\n AbortRuleId: undefined,\n Bucket: undefined,\n Initiator: undefined,\n IsTruncated: undefined,\n Key: undefined,\n MaxParts: undefined,\n NextPartNumberMarker: undefined,\n Owner: undefined,\n PartNumberMarker: undefined,\n Parts: undefined,\n RequestCharged: undefined,\n StorageClass: undefined,\n UploadId: undefined\n };\n if (output.headers[\"x-amz-abort-date\"] !== undefined) {\n contents.AbortDate = new Date(output.headers[\"x-amz-abort-date\"]);\n }\n if (output.headers[\"x-amz-abort-rule-id\"] !== undefined) {\n contents.AbortRuleId = output.headers[\"x-amz-abort-rule-id\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n if (data[\"Bucket\"] !== undefined) {\n contents.Bucket = data[\"Bucket\"];\n }\n if (data[\"Initiator\"] !== undefined) {\n contents.Initiator = deserializeAws_restXmlInitiator(data[\"Initiator\"], context);\n }\n if (data[\"IsTruncated\"] !== undefined) {\n contents.IsTruncated = data[\"IsTruncated\"] == \"true\";\n }\n if (data[\"Key\"] !== undefined) {\n contents.Key = data[\"Key\"];\n }\n if (data[\"MaxParts\"] !== undefined) {\n contents.MaxParts = parseInt(data[\"MaxParts\"]);\n }\n if (data[\"NextPartNumberMarker\"] !== undefined) {\n contents.NextPartNumberMarker = parseInt(data[\"NextPartNumberMarker\"]);\n }\n if (data[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(data[\"Owner\"], context);\n }\n if (data[\"PartNumberMarker\"] !== undefined) {\n contents.PartNumberMarker = parseInt(data[\"PartNumberMarker\"]);\n }\n if (data.Part === \"\") {\n contents.Parts = [];\n }\n if (data[\"Part\"] !== undefined) {\n wrappedItem = data[\"Part\"] instanceof Array ? data[\"Part\"] : [data[\"Part\"]];\n contents.Parts = deserializeAws_restXmlParts(wrappedItem, context);\n }\n if (data[\"StorageClass\"] !== undefined) {\n contents.StorageClass = data[\"StorageClass\"];\n }\n if (data[\"UploadId\"] !== undefined) {\n contents.UploadId = data[\"UploadId\"];\n }\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlListPartsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketAccelerateConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketAccelerateConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketAccelerateConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketAclCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketAclCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketAclCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketAnalyticsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketAnalyticsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketAnalyticsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketCorsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketCorsCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketCorsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketEncryptionCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketEncryptionCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketEncryptionCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketInventoryConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketInventoryConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketInventoryConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketLifecycleConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketLifecycleConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketLifecycleConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketLoggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketLoggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketLoggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketMetricsConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketMetricsConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketMetricsConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketNotificationConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketNotificationConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketNotificationConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketPolicyCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketPolicyCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketPolicyCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketReplicationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketReplicationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketReplicationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketRequestPaymentCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketRequestPaymentCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketRequestPaymentCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketVersioningCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketVersioningCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketVersioningCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutBucketWebsiteCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutBucketWebsiteCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutBucketWebsiteCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectOutput\",\n ETag: undefined,\n Expiration: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSEncryptionContext: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined,\n VersionId: undefined\n };\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-expiration\"] !== undefined) {\n contents.Expiration = output.headers[\"x-amz-expiration\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-context\"] !== undefined) {\n contents.SSEKMSEncryptionContext =\n output.headers[\"x-amz-server-side-encryption-context\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectAclCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectAclCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectAclOutput\",\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectAclCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"NoSuchKey\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#NoSuchKey\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlNoSuchKeyResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectLegalHoldCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectLegalHoldCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectLegalHoldOutput\",\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectLegalHoldCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectLockConfigurationCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectLockConfigurationCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectLockConfigurationOutput\",\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectLockConfigurationCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectRetentionCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectRetentionCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectRetentionOutput\",\n RequestCharged: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectRetentionCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutObjectTaggingCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutObjectTaggingCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"PutObjectTaggingOutput\",\n VersionId: undefined\n };\n if (output.headers[\"x-amz-version-id\"] !== undefined) {\n contents.VersionId = output.headers[\"x-amz-version-id\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutObjectTaggingCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlPutPublicAccessBlockCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlPutPublicAccessBlockCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output)\n };\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlPutPublicAccessBlockCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlRestoreObjectCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlRestoreObjectCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"RestoreObjectOutput\",\n RequestCharged: undefined,\n RestoreOutputPath: undefined\n };\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-restore-output-path\"] !== undefined) {\n contents.RestoreOutputPath = output.headers[\"x-amz-restore-output-path\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlRestoreObjectCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, _c, _d, parsedBody, message;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _e.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n _c = errorCode;\n switch (_c) {\n case \"ObjectAlreadyInActiveTierError\": return [3 /*break*/, 2];\n case \"com.amazonaws.s3#ObjectAlreadyInActiveTierError\": return [3 /*break*/, 2];\n }\n return [3 /*break*/, 4];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_restXmlObjectAlreadyInActiveTierErrorResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_e.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 5];\n case 4:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _e.label = 5;\n case 5:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlSelectObjectContentCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n var _this = this;\n return __generator(this, function (_a) {\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlSelectObjectContentCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"SelectObjectContentOutput\",\n Payload: undefined\n };\n data = context.eventStreamMarshaller.deserialize(output.body, function (event) { return __awaiter(_this, void 0, void 0, function () {\n var eventName, eventHeaders, eventMessage, parsedEvent;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n eventName = Object.keys(event)[0];\n eventHeaders = Object.entries(event[eventName].headers).reduce(function (accummulator, curr) {\n accummulator[curr[0]] = curr[1].value;\n return accummulator;\n }, {});\n eventMessage = {\n headers: eventHeaders,\n body: event[eventName].body\n };\n parsedEvent = (_a = {},\n _a[eventName] = eventMessage,\n _a);\n return [4 /*yield*/, deserializeAws_restXmlSelectObjectContentEventStream_event(parsedEvent, context)];\n case 1: return [2 /*return*/, _b.sent()];\n }\n });\n }); });\n contents.Payload = data;\n return [2 /*return*/, Promise.resolve(contents)];\n });\n });\n}\nfunction deserializeAws_restXmlSelectObjectContentCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlUploadPartCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlUploadPartCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"UploadPartOutput\",\n ETag: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined\n };\n if (output.headers[\"etag\"] !== undefined) {\n contents.ETag = output.headers[\"etag\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlUploadPartCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_restXmlUploadPartCopyCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode !== 200 && output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_restXmlUploadPartCopyCommandError(output, context)];\n }\n contents = {\n $metadata: deserializeMetadata(output),\n __type: \"UploadPartCopyOutput\",\n CopyPartResult: undefined,\n CopySourceVersionId: undefined,\n RequestCharged: undefined,\n SSECustomerAlgorithm: undefined,\n SSECustomerKeyMD5: undefined,\n SSEKMSKeyId: undefined,\n ServerSideEncryption: undefined\n };\n if (output.headers[\"x-amz-copy-source-version-id\"] !== undefined) {\n contents.CopySourceVersionId =\n output.headers[\"x-amz-copy-source-version-id\"];\n }\n if (output.headers[\"x-amz-request-charged\"] !== undefined) {\n contents.RequestCharged = output.headers[\"x-amz-request-charged\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-algorithm\"] !==\n undefined) {\n contents.SSECustomerAlgorithm =\n output.headers[\"x-amz-server-side-encryption-customer-algorithm\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-customer-key-md5\"] !==\n undefined) {\n contents.SSECustomerKeyMD5 =\n output.headers[\"x-amz-server-side-encryption-customer-key-md5\"];\n }\n if (output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"] !== undefined) {\n contents.SSEKMSKeyId =\n output.headers[\"x-amz-server-side-encryption-aws-kms-key-id\"];\n }\n if (output.headers[\"x-amz-server-side-encryption\"] !== undefined) {\n contents.ServerSideEncryption =\n output.headers[\"x-amz-server-side-encryption\"];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents.CopyPartResult = deserializeAws_restXmlCopyPartResult(data, context);\n return [2 /*return*/, Promise.resolve(contents)];\n }\n });\n });\n}\nfunction deserializeAws_restXmlUploadPartCopyCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, parsedBody, message;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _c.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorCode = loadRestXmlErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n default:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n }\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nvar deserializeAws_restXmlSelectObjectContentEventStream_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var _a, _b, _c, _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!(output[\"Cont\"] !== undefined)) return [3 /*break*/, 2];\n _a = {};\n return [4 /*yield*/, deserializeAws_restXmlContinuationEvent_event(output[\"Cont\"], context)];\n case 1: return [2 /*return*/, (_a.Cont = _f.sent(),\n _a)];\n case 2:\n if (!(output[\"End\"] !== undefined)) return [3 /*break*/, 4];\n _b = {};\n return [4 /*yield*/, deserializeAws_restXmlEndEvent_event(output[\"End\"], context)];\n case 3: return [2 /*return*/, (_b.End = _f.sent(),\n _b)];\n case 4:\n if (!(output[\"Progress\"] !== undefined)) return [3 /*break*/, 6];\n _c = {};\n return [4 /*yield*/, deserializeAws_restXmlProgressEvent_event(output[\"Progress\"], context)];\n case 5: return [2 /*return*/, (_c.Progress = _f.sent(),\n _c)];\n case 6:\n if (!(output[\"Records\"] !== undefined)) return [3 /*break*/, 8];\n _d = {};\n return [4 /*yield*/, deserializeAws_restXmlRecordsEvent_event(output[\"Records\"], context)];\n case 7: return [2 /*return*/, (_d.Records = _f.sent(),\n _d)];\n case 8:\n if (!(output[\"Stats\"] !== undefined)) return [3 /*break*/, 10];\n _e = {};\n return [4 /*yield*/, deserializeAws_restXmlStatsEvent_event(output[\"Stats\"], context)];\n case 9: return [2 /*return*/, (_e.Stats = _f.sent(),\n _e)];\n case 10: return [2 /*return*/, { $unknown: output }];\n }\n });\n}); };\nvar deserializeAws_restXmlContinuationEvent_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n contents = {};\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlEndEvent_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n contents = {};\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlProgressEvent_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n contents = {\n __type: \"ProgressEvent\"\n };\n _a = contents;\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n _a.Details = _b.sent();\n return [2 /*return*/, contents];\n }\n });\n}); };\nvar deserializeAws_restXmlRecordsEvent_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents;\n return __generator(this, function (_a) {\n contents = {\n __type: \"RecordsEvent\"\n };\n contents.Payload = output.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlStatsEvent_event = function (output, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n contents = {\n __type: \"StatsEvent\"\n };\n _a = contents;\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n _a.Details = _b.sent();\n return [2 /*return*/, contents];\n }\n });\n}); };\nvar deserializeAws_restXmlBucketAlreadyExistsResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"BucketAlreadyExists\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlBucketAlreadyOwnedByYouResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"BucketAlreadyOwnedByYou\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlNoSuchBucketResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"NoSuchBucket\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlNoSuchKeyResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"NoSuchKey\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlNoSuchUploadResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"NoSuchUpload\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlObjectAlreadyInActiveTierErrorResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"ObjectAlreadyInActiveTierError\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_restXmlObjectNotInActiveTierErrorResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var contents, data;\n return __generator(this, function (_a) {\n contents = {\n name: \"ObjectNotInActiveTierError\",\n $fault: \"client\",\n $metadata: deserializeMetadata(parsedOutput)\n };\n data = parsedOutput.body;\n return [2 /*return*/, contents];\n });\n}); };\nvar serializeAws_restXmlAbortIncompleteMultipartUpload = function (input, context) {\n var bodyNode = new __XmlNode(\"AbortIncompleteMultipartUpload\");\n if (input.DaysAfterInitiation !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"DaysAfterInitiation\")\n .addChildNode(new __XmlText(String(input.DaysAfterInitiation)))\n .withName(\"DaysAfterInitiation\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAccelerateConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"AccelerateConfiguration\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketAccelerateStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAccessControlPolicy = function (input, context) {\n var bodyNode = new __XmlNode(\"AccessControlPolicy\");\n if (input.Grants !== undefined) {\n var nodes = serializeAws_restXmlGrants(input.Grants, context);\n var containerNode_1 = new __XmlNode(\"AccessControlList\");\n nodes.map(function (node) {\n containerNode_1.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_1);\n }\n if (input.Owner !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlOwner(input.Owner, context).withName(\"Owner\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAccessControlTranslation = function (input, context) {\n var bodyNode = new __XmlNode(\"AccessControlTranslation\");\n if (input.Owner !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"OwnerOverride\")\n .addChildNode(new __XmlText(input.Owner))\n .withName(\"Owner\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAllowedHeaders = function (input, context) {\n var e_1, _a;\n var collectedNodes = [];\n try {\n for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n var entry = input_1_1.value;\n var node = new __XmlNode(\"AllowedHeader\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlAllowedMethods = function (input, context) {\n var e_2, _a;\n var collectedNodes = [];\n try {\n for (var input_2 = __values(input), input_2_1 = input_2.next(); !input_2_1.done; input_2_1 = input_2.next()) {\n var entry = input_2_1.value;\n var node = new __XmlNode(\"AllowedMethod\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (input_2_1 && !input_2_1.done && (_a = input_2.return)) _a.call(input_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlAllowedOrigins = function (input, context) {\n var e_3, _a;\n var collectedNodes = [];\n try {\n for (var input_3 = __values(input), input_3_1 = input_3.next(); !input_3_1.done; input_3_1 = input_3.next()) {\n var entry = input_3_1.value;\n var node = new __XmlNode(\"AllowedOrigin\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (input_3_1 && !input_3_1.done && (_a = input_3.return)) _a.call(input_3);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlAnalyticsAndOperator = function (input, context) {\n var bodyNode = new __XmlNode(\"AnalyticsAndOperator\");\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tags !== undefined) {\n var nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map(function (node) {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAnalyticsConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"AnalyticsConfiguration\");\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAnalyticsFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AnalyticsId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n if (input.StorageClassAnalysis !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlStorageClassAnalysis(input.StorageClassAnalysis, context).withName(\"StorageClassAnalysis\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAnalyticsExportDestination = function (input, context) {\n var bodyNode = new __XmlNode(\"AnalyticsExportDestination\");\n if (input.S3BucketDestination !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAnalyticsS3BucketDestination(input.S3BucketDestination, context).withName(\"S3BucketDestination\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAnalyticsFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"AnalyticsFilter\");\n if (input.And !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAnalyticsAndOperator(input.And, context).withName(\"And\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tag !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlTag(input.Tag, context).withName(\"Tag\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlAnalyticsS3BucketDestination = function (input, context) {\n var bodyNode = new __XmlNode(\"AnalyticsS3BucketDestination\");\n if (input.Bucket !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketName\")\n .addChildNode(new __XmlText(input.Bucket))\n .withName(\"Bucket\"));\n }\n if (input.BucketAccountId !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AccountId\")\n .addChildNode(new __XmlText(input.BucketAccountId))\n .withName(\"BucketAccountId\"));\n }\n if (input.Format !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AnalyticsS3ExportFileFormat\")\n .addChildNode(new __XmlText(input.Format))\n .withName(\"Format\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlBucketLifecycleConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"BucketLifecycleConfiguration\");\n if (input.Rules !== undefined) {\n var nodes = serializeAws_restXmlLifecycleRules(input.Rules, context);\n nodes.map(function (node) {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlBucketLoggingStatus = function (input, context) {\n var bodyNode = new __XmlNode(\"BucketLoggingStatus\");\n if (input.LoggingEnabled !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlLoggingEnabled(input.LoggingEnabled, context).withName(\"LoggingEnabled\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCORSConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"CORSConfiguration\");\n if (input.CORSRules !== undefined) {\n var nodes = serializeAws_restXmlCORSRules(input.CORSRules, context);\n nodes.map(function (node) {\n node = node.withName(\"CORSRule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCORSRule = function (input, context) {\n var bodyNode = new __XmlNode(\"CORSRule\");\n if (input.AllowedHeaders !== undefined) {\n var nodes = serializeAws_restXmlAllowedHeaders(input.AllowedHeaders, context);\n nodes.map(function (node) {\n node = node.withName(\"AllowedHeader\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.AllowedMethods !== undefined) {\n var nodes = serializeAws_restXmlAllowedMethods(input.AllowedMethods, context);\n nodes.map(function (node) {\n node = node.withName(\"AllowedMethod\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.AllowedOrigins !== undefined) {\n var nodes = serializeAws_restXmlAllowedOrigins(input.AllowedOrigins, context);\n nodes.map(function (node) {\n node = node.withName(\"AllowedOrigin\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.ExposeHeaders !== undefined) {\n var nodes = serializeAws_restXmlExposeHeaders(input.ExposeHeaders, context);\n nodes.map(function (node) {\n node = node.withName(\"ExposeHeader\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.MaxAgeSeconds !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MaxAgeSeconds\")\n .addChildNode(new __XmlText(String(input.MaxAgeSeconds)))\n .withName(\"MaxAgeSeconds\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCORSRules = function (input, context) {\n var e_4, _a;\n var collectedNodes = [];\n try {\n for (var input_4 = __values(input), input_4_1 = input_4.next(); !input_4_1.done; input_4_1 = input_4.next()) {\n var entry = input_4_1.value;\n var node = serializeAws_restXmlCORSRule(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (input_4_1 && !input_4_1.done && (_a = input_4.return)) _a.call(input_4);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlCSVInput = function (input, context) {\n var bodyNode = new __XmlNode(\"CSVInput\");\n if (input.AllowQuotedRecordDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AllowQuotedRecordDelimiter\")\n .addChildNode(new __XmlText(String(input.AllowQuotedRecordDelimiter)))\n .withName(\"AllowQuotedRecordDelimiter\"));\n }\n if (input.Comments !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Comments\")\n .addChildNode(new __XmlText(input.Comments))\n .withName(\"Comments\"));\n }\n if (input.FieldDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"FieldDelimiter\")\n .addChildNode(new __XmlText(input.FieldDelimiter))\n .withName(\"FieldDelimiter\"));\n }\n if (input.FileHeaderInfo !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"FileHeaderInfo\")\n .addChildNode(new __XmlText(input.FileHeaderInfo))\n .withName(\"FileHeaderInfo\"));\n }\n if (input.QuoteCharacter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QuoteCharacter\")\n .addChildNode(new __XmlText(input.QuoteCharacter))\n .withName(\"QuoteCharacter\"));\n }\n if (input.QuoteEscapeCharacter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QuoteEscapeCharacter\")\n .addChildNode(new __XmlText(input.QuoteEscapeCharacter))\n .withName(\"QuoteEscapeCharacter\"));\n }\n if (input.RecordDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCSVOutput = function (input, context) {\n var bodyNode = new __XmlNode(\"CSVOutput\");\n if (input.FieldDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"FieldDelimiter\")\n .addChildNode(new __XmlText(input.FieldDelimiter))\n .withName(\"FieldDelimiter\"));\n }\n if (input.QuoteCharacter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QuoteCharacter\")\n .addChildNode(new __XmlText(input.QuoteCharacter))\n .withName(\"QuoteCharacter\"));\n }\n if (input.QuoteEscapeCharacter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QuoteEscapeCharacter\")\n .addChildNode(new __XmlText(input.QuoteEscapeCharacter))\n .withName(\"QuoteEscapeCharacter\"));\n }\n if (input.QuoteFields !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QuoteFields\")\n .addChildNode(new __XmlText(input.QuoteFields))\n .withName(\"QuoteFields\"));\n }\n if (input.RecordDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCompletedMultipartUpload = function (input, context) {\n var bodyNode = new __XmlNode(\"CompletedMultipartUpload\");\n if (input.Parts !== undefined) {\n var nodes = serializeAws_restXmlCompletedPartList(input.Parts, context);\n nodes.map(function (node) {\n node = node.withName(\"Part\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCompletedPart = function (input, context) {\n var bodyNode = new __XmlNode(\"CompletedPart\");\n if (input.ETag !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ETag\")\n .addChildNode(new __XmlText(input.ETag))\n .withName(\"ETag\"));\n }\n if (input.PartNumber !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"PartNumber\")\n .addChildNode(new __XmlText(String(input.PartNumber)))\n .withName(\"PartNumber\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCompletedPartList = function (input, context) {\n var e_5, _a;\n var collectedNodes = [];\n try {\n for (var input_5 = __values(input), input_5_1 = input_5.next(); !input_5_1.done; input_5_1 = input_5.next()) {\n var entry = input_5_1.value;\n var node = serializeAws_restXmlCompletedPart(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (input_5_1 && !input_5_1.done && (_a = input_5.return)) _a.call(input_5);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlCondition = function (input, context) {\n var bodyNode = new __XmlNode(\"Condition\");\n if (input.HttpErrorCodeReturnedEquals !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"HttpErrorCodeReturnedEquals\")\n .addChildNode(new __XmlText(input.HttpErrorCodeReturnedEquals))\n .withName(\"HttpErrorCodeReturnedEquals\"));\n }\n if (input.KeyPrefixEquals !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"KeyPrefixEquals\")\n .addChildNode(new __XmlText(input.KeyPrefixEquals))\n .withName(\"KeyPrefixEquals\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlCreateBucketConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"CreateBucketConfiguration\");\n if (input.LocationConstraint !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketLocationConstraint\")\n .addChildNode(new __XmlText(input.LocationConstraint))\n .withName(\"LocationConstraint\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlDefaultRetention = function (input, context) {\n var bodyNode = new __XmlNode(\"DefaultRetention\");\n if (input.Days !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.Days)))\n .withName(\"Days\"));\n }\n if (input.Mode !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectLockRetentionMode\")\n .addChildNode(new __XmlText(input.Mode))\n .withName(\"Mode\"));\n }\n if (input.Years !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Years\")\n .addChildNode(new __XmlText(String(input.Years)))\n .withName(\"Years\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlDelete = function (input, context) {\n var bodyNode = new __XmlNode(\"Delete\");\n if (input.Objects !== undefined) {\n var nodes = serializeAws_restXmlObjectIdentifierList(input.Objects, context);\n nodes.map(function (node) {\n node = node.withName(\"Object\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Quiet !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Quiet\")\n .addChildNode(new __XmlText(String(input.Quiet)))\n .withName(\"Quiet\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlDeleteMarkerReplication = function (input, context) {\n var bodyNode = new __XmlNode(\"DeleteMarkerReplication\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"DeleteMarkerReplicationStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlDestination = function (input, context) {\n var bodyNode = new __XmlNode(\"Destination\");\n if (input.AccessControlTranslation !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAccessControlTranslation(input.AccessControlTranslation, context).withName(\"AccessControlTranslation\"));\n }\n if (input.Account !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AccountId\")\n .addChildNode(new __XmlText(input.Account))\n .withName(\"Account\"));\n }\n if (input.Bucket !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketName\")\n .addChildNode(new __XmlText(input.Bucket))\n .withName(\"Bucket\"));\n }\n if (input.EncryptionConfiguration !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlEncryptionConfiguration(input.EncryptionConfiguration, context).withName(\"EncryptionConfiguration\"));\n }\n if (input.Metrics !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlMetrics(input.Metrics, context).withName(\"Metrics\"));\n }\n if (input.ReplicationTime !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlReplicationTime(input.ReplicationTime, context).withName(\"ReplicationTime\"));\n }\n if (input.StorageClass !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"StorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlEncryption = function (input, context) {\n var bodyNode = new __XmlNode(\"Encryption\");\n if (input.EncryptionType !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ServerSideEncryption\")\n .addChildNode(new __XmlText(input.EncryptionType))\n .withName(\"EncryptionType\"));\n }\n if (input.KMSContext !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"KMSContext\")\n .addChildNode(new __XmlText(input.KMSContext))\n .withName(\"KMSContext\"));\n }\n if (input.KMSKeyId !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"SSEKMSKeyId\")\n .addChildNode(new __XmlText(input.KMSKeyId))\n .withName(\"KMSKeyId\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlEncryptionConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"EncryptionConfiguration\");\n if (input.ReplicaKmsKeyID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ReplicaKmsKeyID\")\n .addChildNode(new __XmlText(input.ReplicaKmsKeyID))\n .withName(\"ReplicaKmsKeyID\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlErrorDocument = function (input, context) {\n var bodyNode = new __XmlNode(\"ErrorDocument\");\n if (input.Key !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectKey\")\n .addChildNode(new __XmlText(input.Key))\n .withName(\"Key\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlEventList = function (input, context) {\n var e_6, _a;\n var collectedNodes = [];\n try {\n for (var input_6 = __values(input), input_6_1 = input_6.next(); !input_6_1.done; input_6_1 = input_6.next()) {\n var entry = input_6_1.value;\n var node = new __XmlNode(\"Event\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (input_6_1 && !input_6_1.done && (_a = input_6.return)) _a.call(input_6);\n }\n finally { if (e_6) throw e_6.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlExistingObjectReplication = function (input, context) {\n var bodyNode = new __XmlNode(\"ExistingObjectReplication\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ExistingObjectReplicationStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlExposeHeaders = function (input, context) {\n var e_7, _a;\n var collectedNodes = [];\n try {\n for (var input_7 = __values(input), input_7_1 = input_7.next(); !input_7_1.done; input_7_1 = input_7.next()) {\n var entry = input_7_1.value;\n var node = new __XmlNode(\"ExposeHeader\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (input_7_1 && !input_7_1.done && (_a = input_7.return)) _a.call(input_7);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlFilterRule = function (input, context) {\n var bodyNode = new __XmlNode(\"FilterRule\");\n if (input.Name !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"FilterRuleName\")\n .addChildNode(new __XmlText(input.Name))\n .withName(\"Name\"));\n }\n if (input.Value !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"FilterRuleValue\")\n .addChildNode(new __XmlText(input.Value))\n .withName(\"Value\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlFilterRuleList = function (input, context) {\n var e_8, _a;\n var collectedNodes = [];\n try {\n for (var input_8 = __values(input), input_8_1 = input_8.next(); !input_8_1.done; input_8_1 = input_8.next()) {\n var entry = input_8_1.value;\n var node = serializeAws_restXmlFilterRule(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_8_1) { e_8 = { error: e_8_1 }; }\n finally {\n try {\n if (input_8_1 && !input_8_1.done && (_a = input_8.return)) _a.call(input_8);\n }\n finally { if (e_8) throw e_8.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlGlacierJobParameters = function (input, context) {\n var bodyNode = new __XmlNode(\"GlacierJobParameters\");\n if (input.Tier !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Tier\")\n .addChildNode(new __XmlText(input.Tier))\n .withName(\"Tier\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlGrant = function (input, context) {\n var bodyNode = new __XmlNode(\"Grant\");\n if (input.Grantee !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlGrantee(input.Grantee, context).withName(\"Grantee\"));\n }\n if (input.Permission !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Permission\")\n .addChildNode(new __XmlText(input.Permission))\n .withName(\"Permission\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlGrantee = function (input, context) {\n var bodyNode = new __XmlNode(\"Grantee\");\n bodyNode.addAttribute(\"xmlns:xsi\", \"http://www.w3.org/2001/XMLSchema-instance\");\n if (input.DisplayName !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"DisplayName\")\n .addChildNode(new __XmlText(input.DisplayName))\n .withName(\"DisplayName\"));\n }\n if (input.EmailAddress !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"EmailAddress\")\n .addChildNode(new __XmlText(input.EmailAddress))\n .withName(\"EmailAddress\"));\n }\n if (input.ID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\"));\n }\n if (input.Type !== undefined) {\n bodyNode.addAttribute(\"xsi:type\", input.Type);\n }\n if (input.URI !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"URI\")\n .addChildNode(new __XmlText(input.URI))\n .withName(\"URI\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlGrants = function (input, context) {\n var e_9, _a;\n var collectedNodes = [];\n try {\n for (var input_9 = __values(input), input_9_1 = input_9.next(); !input_9_1.done; input_9_1 = input_9.next()) {\n var entry = input_9_1.value;\n var node = serializeAws_restXmlGrant(entry, context);\n collectedNodes.push(node.withName(\"Grant\"));\n }\n }\n catch (e_9_1) { e_9 = { error: e_9_1 }; }\n finally {\n try {\n if (input_9_1 && !input_9_1.done && (_a = input_9.return)) _a.call(input_9);\n }\n finally { if (e_9) throw e_9.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlIndexDocument = function (input, context) {\n var bodyNode = new __XmlNode(\"IndexDocument\");\n if (input.Suffix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Suffix\")\n .addChildNode(new __XmlText(input.Suffix))\n .withName(\"Suffix\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInputSerialization = function (input, context) {\n var bodyNode = new __XmlNode(\"InputSerialization\");\n if (input.CSV !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlCSVInput(input.CSV, context).withName(\"CSV\"));\n }\n if (input.CompressionType !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"CompressionType\")\n .addChildNode(new __XmlText(input.CompressionType))\n .withName(\"CompressionType\"));\n }\n if (input.JSON !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlJSONInput(input.JSON, context).withName(\"JSON\"));\n }\n if (input.Parquet !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlParquetInput(input.Parquet, context).withName(\"Parquet\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventoryConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"InventoryConfiguration\");\n if (input.Destination !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInventoryDestination(input.Destination, context).withName(\"Destination\"));\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInventoryFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"InventoryId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n if (input.IncludedObjectVersions !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"InventoryIncludedObjectVersions\")\n .addChildNode(new __XmlText(input.IncludedObjectVersions))\n .withName(\"IncludedObjectVersions\"));\n }\n if (input.IsEnabled !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"IsEnabled\")\n .addChildNode(new __XmlText(String(input.IsEnabled)))\n .withName(\"IsEnabled\"));\n }\n if (input.OptionalFields !== undefined) {\n var nodes = serializeAws_restXmlInventoryOptionalFields(input.OptionalFields, context);\n var containerNode_2 = new __XmlNode(\"OptionalFields\");\n nodes.map(function (node) {\n containerNode_2.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_2);\n }\n if (input.Schedule !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInventorySchedule(input.Schedule, context).withName(\"Schedule\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventoryDestination = function (input, context) {\n var bodyNode = new __XmlNode(\"InventoryDestination\");\n if (input.S3BucketDestination !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInventoryS3BucketDestination(input.S3BucketDestination, context).withName(\"S3BucketDestination\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventoryEncryption = function (input, context) {\n var bodyNode = new __XmlNode(\"InventoryEncryption\");\n if (input.SSEKMS !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlSSEKMS(input.SSEKMS, context).withName(\"SSE-KMS\"));\n }\n if (input.SSES3 !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlSSES3(input.SSES3, context).withName(\"SSE-S3\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventoryFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"InventoryFilter\");\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventoryOptionalFields = function (input, context) {\n var e_10, _a;\n var collectedNodes = [];\n try {\n for (var input_10 = __values(input), input_10_1 = input_10.next(); !input_10_1.done; input_10_1 = input_10.next()) {\n var entry = input_10_1.value;\n var node = new __XmlNode(\"InventoryOptionalField\").addChildNode(new __XmlText(entry));\n collectedNodes.push(node.withName(\"Field\"));\n }\n }\n catch (e_10_1) { e_10 = { error: e_10_1 }; }\n finally {\n try {\n if (input_10_1 && !input_10_1.done && (_a = input_10.return)) _a.call(input_10);\n }\n finally { if (e_10) throw e_10.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlInventoryS3BucketDestination = function (input, context) {\n var bodyNode = new __XmlNode(\"InventoryS3BucketDestination\");\n if (input.AccountId !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"AccountId\")\n .addChildNode(new __XmlText(input.AccountId))\n .withName(\"AccountId\"));\n }\n if (input.Bucket !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketName\")\n .addChildNode(new __XmlText(input.Bucket))\n .withName(\"Bucket\"));\n }\n if (input.Encryption !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInventoryEncryption(input.Encryption, context).withName(\"Encryption\"));\n }\n if (input.Format !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"InventoryFormat\")\n .addChildNode(new __XmlText(input.Format))\n .withName(\"Format\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlInventorySchedule = function (input, context) {\n var bodyNode = new __XmlNode(\"InventorySchedule\");\n if (input.Frequency !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"InventoryFrequency\")\n .addChildNode(new __XmlText(input.Frequency))\n .withName(\"Frequency\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlJSONInput = function (input, context) {\n var bodyNode = new __XmlNode(\"JSONInput\");\n if (input.Type !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"JSONType\")\n .addChildNode(new __XmlText(input.Type))\n .withName(\"Type\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlJSONOutput = function (input, context) {\n var bodyNode = new __XmlNode(\"JSONOutput\");\n if (input.RecordDelimiter !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"RecordDelimiter\")\n .addChildNode(new __XmlText(input.RecordDelimiter))\n .withName(\"RecordDelimiter\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLambdaFunctionConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"LambdaFunctionConfiguration\");\n if (input.Events !== undefined) {\n var nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map(function (node) {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"NotificationId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n if (input.LambdaFunctionArn !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"LambdaFunctionArn\")\n .addChildNode(new __XmlText(input.LambdaFunctionArn))\n .withName(\"CloudFunction\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLambdaFunctionConfigurationList = function (input, context) {\n var e_11, _a;\n var collectedNodes = [];\n try {\n for (var input_11 = __values(input), input_11_1 = input_11.next(); !input_11_1.done; input_11_1 = input_11.next()) {\n var entry = input_11_1.value;\n var node = serializeAws_restXmlLambdaFunctionConfiguration(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_11_1) { e_11 = { error: e_11_1 }; }\n finally {\n try {\n if (input_11_1 && !input_11_1.done && (_a = input_11.return)) _a.call(input_11);\n }\n finally { if (e_11) throw e_11.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlLifecycleExpiration = function (input, context) {\n var bodyNode = new __XmlNode(\"LifecycleExpiration\");\n if (input.Date !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.Date.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"Date\"));\n }\n if (input.Days !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.Days)))\n .withName(\"Days\"));\n }\n if (input.ExpiredObjectDeleteMarker !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ExpiredObjectDeleteMarker\")\n .addChildNode(new __XmlText(String(input.ExpiredObjectDeleteMarker)))\n .withName(\"ExpiredObjectDeleteMarker\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLifecycleRule = function (input, context) {\n var bodyNode = new __XmlNode(\"LifecycleRule\");\n if (input.AbortIncompleteMultipartUpload !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAbortIncompleteMultipartUpload(input.AbortIncompleteMultipartUpload, context).withName(\"AbortIncompleteMultipartUpload\"));\n }\n if (input.Expiration !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlLifecycleExpiration(input.Expiration, context).withName(\"Expiration\"));\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlLifecycleRuleFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.ID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\"));\n }\n if (input.NoncurrentVersionExpiration !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlNoncurrentVersionExpiration(input.NoncurrentVersionExpiration, context).withName(\"NoncurrentVersionExpiration\"));\n }\n if (input.NoncurrentVersionTransitions !== undefined) {\n var nodes = serializeAws_restXmlNoncurrentVersionTransitionList(input.NoncurrentVersionTransitions, context);\n nodes.map(function (node) {\n node = node.withName(\"NoncurrentVersionTransition\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ExpirationStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n if (input.Transitions !== undefined) {\n var nodes = serializeAws_restXmlTransitionList(input.Transitions, context);\n nodes.map(function (node) {\n node = node.withName(\"Transition\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLifecycleRuleAndOperator = function (input, context) {\n var bodyNode = new __XmlNode(\"LifecycleRuleAndOperator\");\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tags !== undefined) {\n var nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map(function (node) {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLifecycleRuleFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"LifecycleRuleFilter\");\n if (input.And !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlLifecycleRuleAndOperator(input.And, context).withName(\"And\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tag !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlTag(input.Tag, context).withName(\"Tag\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlLifecycleRules = function (input, context) {\n var e_12, _a;\n var collectedNodes = [];\n try {\n for (var input_12 = __values(input), input_12_1 = input_12.next(); !input_12_1.done; input_12_1 = input_12.next()) {\n var entry = input_12_1.value;\n var node = serializeAws_restXmlLifecycleRule(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_12_1) { e_12 = { error: e_12_1 }; }\n finally {\n try {\n if (input_12_1 && !input_12_1.done && (_a = input_12.return)) _a.call(input_12);\n }\n finally { if (e_12) throw e_12.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlLoggingEnabled = function (input, context) {\n var bodyNode = new __XmlNode(\"LoggingEnabled\");\n if (input.TargetBucket !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"TargetBucket\")\n .addChildNode(new __XmlText(input.TargetBucket))\n .withName(\"TargetBucket\"));\n }\n if (input.TargetGrants !== undefined) {\n var nodes = serializeAws_restXmlTargetGrants(input.TargetGrants, context);\n var containerNode_3 = new __XmlNode(\"TargetGrants\");\n nodes.map(function (node) {\n containerNode_3.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_3);\n }\n if (input.TargetPrefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"TargetPrefix\")\n .addChildNode(new __XmlText(input.TargetPrefix))\n .withName(\"TargetPrefix\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlMetadataEntry = function (input, context) {\n var bodyNode = new __XmlNode(\"MetadataEntry\");\n if (input.Name !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MetadataKey\")\n .addChildNode(new __XmlText(input.Name))\n .withName(\"Name\"));\n }\n if (input.Value !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MetadataValue\")\n .addChildNode(new __XmlText(input.Value))\n .withName(\"Value\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlMetrics = function (input, context) {\n var bodyNode = new __XmlNode(\"Metrics\");\n if (input.EventThreshold !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlReplicationTimeValue(input.EventThreshold, context).withName(\"EventThreshold\"));\n }\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MetricsStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlMetricsAndOperator = function (input, context) {\n var bodyNode = new __XmlNode(\"MetricsAndOperator\");\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tags !== undefined) {\n var nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map(function (node) {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlMetricsConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"MetricsConfiguration\");\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlMetricsFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MetricsId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlMetricsFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"MetricsFilter\");\n if (input.And !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlMetricsAndOperator(input.And, context).withName(\"And\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tag !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlTag(input.Tag, context).withName(\"Tag\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlNoncurrentVersionExpiration = function (input, context) {\n var bodyNode = new __XmlNode(\"NoncurrentVersionExpiration\");\n if (input.NoncurrentDays !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.NoncurrentDays)))\n .withName(\"NoncurrentDays\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlNoncurrentVersionTransition = function (input, context) {\n var bodyNode = new __XmlNode(\"NoncurrentVersionTransition\");\n if (input.NoncurrentDays !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.NoncurrentDays)))\n .withName(\"NoncurrentDays\"));\n }\n if (input.StorageClass !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"TransitionStorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlNoncurrentVersionTransitionList = function (input, context) {\n var e_13, _a;\n var collectedNodes = [];\n try {\n for (var input_13 = __values(input), input_13_1 = input_13.next(); !input_13_1.done; input_13_1 = input_13.next()) {\n var entry = input_13_1.value;\n var node = serializeAws_restXmlNoncurrentVersionTransition(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_13_1) { e_13 = { error: e_13_1 }; }\n finally {\n try {\n if (input_13_1 && !input_13_1.done && (_a = input_13.return)) _a.call(input_13);\n }\n finally { if (e_13) throw e_13.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlNotificationConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"NotificationConfiguration\");\n if (input.LambdaFunctionConfigurations !== undefined) {\n var nodes = serializeAws_restXmlLambdaFunctionConfigurationList(input.LambdaFunctionConfigurations, context);\n nodes.map(function (node) {\n node = node.withName(\"CloudFunctionConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.QueueConfigurations !== undefined) {\n var nodes = serializeAws_restXmlQueueConfigurationList(input.QueueConfigurations, context);\n nodes.map(function (node) {\n node = node.withName(\"QueueConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.TopicConfigurations !== undefined) {\n var nodes = serializeAws_restXmlTopicConfigurationList(input.TopicConfigurations, context);\n nodes.map(function (node) {\n node = node.withName(\"TopicConfiguration\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlNotificationConfigurationFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"NotificationConfigurationFilter\");\n if (input.Key !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlS3KeyFilter(input.Key, context).withName(\"S3Key\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlObjectIdentifier = function (input, context) {\n var bodyNode = new __XmlNode(\"ObjectIdentifier\");\n if (input.Key !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectKey\")\n .addChildNode(new __XmlText(input.Key))\n .withName(\"Key\"));\n }\n if (input.VersionId !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectVersionId\")\n .addChildNode(new __XmlText(input.VersionId))\n .withName(\"VersionId\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlObjectIdentifierList = function (input, context) {\n var e_14, _a;\n var collectedNodes = [];\n try {\n for (var input_14 = __values(input), input_14_1 = input_14.next(); !input_14_1.done; input_14_1 = input_14.next()) {\n var entry = input_14_1.value;\n var node = serializeAws_restXmlObjectIdentifier(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_14_1) { e_14 = { error: e_14_1 }; }\n finally {\n try {\n if (input_14_1 && !input_14_1.done && (_a = input_14.return)) _a.call(input_14);\n }\n finally { if (e_14) throw e_14.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlObjectLockConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"ObjectLockConfiguration\");\n if (input.ObjectLockEnabled !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectLockEnabled\")\n .addChildNode(new __XmlText(input.ObjectLockEnabled))\n .withName(\"ObjectLockEnabled\"));\n }\n if (input.Rule !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlObjectLockRule(input.Rule, context).withName(\"Rule\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlObjectLockLegalHold = function (input, context) {\n var bodyNode = new __XmlNode(\"ObjectLockLegalHold\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectLockLegalHoldStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlObjectLockRetention = function (input, context) {\n var bodyNode = new __XmlNode(\"ObjectLockRetention\");\n if (input.Mode !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectLockRetentionMode\")\n .addChildNode(new __XmlText(input.Mode))\n .withName(\"Mode\"));\n }\n if (input.RetainUntilDate !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.RetainUntilDate.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"RetainUntilDate\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlObjectLockRule = function (input, context) {\n var bodyNode = new __XmlNode(\"ObjectLockRule\");\n if (input.DefaultRetention !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlDefaultRetention(input.DefaultRetention, context).withName(\"DefaultRetention\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlOutputLocation = function (input, context) {\n var bodyNode = new __XmlNode(\"OutputLocation\");\n if (input.S3 !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlS3Location(input.S3, context).withName(\"S3\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlOutputSerialization = function (input, context) {\n var bodyNode = new __XmlNode(\"OutputSerialization\");\n if (input.CSV !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlCSVOutput(input.CSV, context).withName(\"CSV\"));\n }\n if (input.JSON !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlJSONOutput(input.JSON, context).withName(\"JSON\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlOwner = function (input, context) {\n var bodyNode = new __XmlNode(\"Owner\");\n if (input.DisplayName !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"DisplayName\")\n .addChildNode(new __XmlText(input.DisplayName))\n .withName(\"DisplayName\"));\n }\n if (input.ID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlParquetInput = function (input, context) {\n var bodyNode = new __XmlNode(\"ParquetInput\");\n return bodyNode;\n};\nvar serializeAws_restXmlPublicAccessBlockConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"PublicAccessBlockConfiguration\");\n if (input.BlockPublicAcls !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.BlockPublicAcls)))\n .withName(\"BlockPublicAcls\"));\n }\n if (input.BlockPublicPolicy !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.BlockPublicPolicy)))\n .withName(\"BlockPublicPolicy\"));\n }\n if (input.IgnorePublicAcls !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.IgnorePublicAcls)))\n .withName(\"IgnorePublicAcls\"));\n }\n if (input.RestrictPublicBuckets !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Setting\")\n .addChildNode(new __XmlText(String(input.RestrictPublicBuckets)))\n .withName(\"RestrictPublicBuckets\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlQueueConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"QueueConfiguration\");\n if (input.Events !== undefined) {\n var nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map(function (node) {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"NotificationId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n if (input.QueueArn !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"QueueArn\")\n .addChildNode(new __XmlText(input.QueueArn))\n .withName(\"Queue\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlQueueConfigurationList = function (input, context) {\n var e_15, _a;\n var collectedNodes = [];\n try {\n for (var input_15 = __values(input), input_15_1 = input_15.next(); !input_15_1.done; input_15_1 = input_15.next()) {\n var entry = input_15_1.value;\n var node = serializeAws_restXmlQueueConfiguration(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_15_1) { e_15 = { error: e_15_1 }; }\n finally {\n try {\n if (input_15_1 && !input_15_1.done && (_a = input_15.return)) _a.call(input_15);\n }\n finally { if (e_15) throw e_15.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlRedirect = function (input, context) {\n var bodyNode = new __XmlNode(\"Redirect\");\n if (input.HostName !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"HostName\")\n .addChildNode(new __XmlText(input.HostName))\n .withName(\"HostName\"));\n }\n if (input.HttpRedirectCode !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"HttpRedirectCode\")\n .addChildNode(new __XmlText(input.HttpRedirectCode))\n .withName(\"HttpRedirectCode\"));\n }\n if (input.Protocol !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Protocol\")\n .addChildNode(new __XmlText(input.Protocol))\n .withName(\"Protocol\"));\n }\n if (input.ReplaceKeyPrefixWith !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ReplaceKeyPrefixWith\")\n .addChildNode(new __XmlText(input.ReplaceKeyPrefixWith))\n .withName(\"ReplaceKeyPrefixWith\"));\n }\n if (input.ReplaceKeyWith !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ReplaceKeyWith\")\n .addChildNode(new __XmlText(input.ReplaceKeyWith))\n .withName(\"ReplaceKeyWith\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRedirectAllRequestsTo = function (input, context) {\n var bodyNode = new __XmlNode(\"RedirectAllRequestsTo\");\n if (input.HostName !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"HostName\")\n .addChildNode(new __XmlText(input.HostName))\n .withName(\"HostName\"));\n }\n if (input.Protocol !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Protocol\")\n .addChildNode(new __XmlText(input.Protocol))\n .withName(\"Protocol\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationConfiguration\");\n if (input.Role !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Role\")\n .addChildNode(new __XmlText(input.Role))\n .withName(\"Role\"));\n }\n if (input.Rules !== undefined) {\n var nodes = serializeAws_restXmlReplicationRules(input.Rules, context);\n nodes.map(function (node) {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationRule = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationRule\");\n if (input.DeleteMarkerReplication !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlDeleteMarkerReplication(input.DeleteMarkerReplication, context).withName(\"DeleteMarkerReplication\"));\n }\n if (input.Destination !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlDestination(input.Destination, context).withName(\"Destination\"));\n }\n if (input.ExistingObjectReplication !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlExistingObjectReplication(input.ExistingObjectReplication, context).withName(\"ExistingObjectReplication\"));\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlReplicationRuleFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.ID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ID\").addChildNode(new __XmlText(input.ID)).withName(\"ID\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Priority !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Priority\")\n .addChildNode(new __XmlText(String(input.Priority)))\n .withName(\"Priority\"));\n }\n if (input.SourceSelectionCriteria !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlSourceSelectionCriteria(input.SourceSelectionCriteria, context).withName(\"SourceSelectionCriteria\"));\n }\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ReplicationRuleStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationRuleAndOperator = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationRuleAndOperator\");\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tags !== undefined) {\n var nodes = serializeAws_restXmlTagSet(input.Tags, context);\n nodes.map(function (node) {\n node = node.withName(\"Tag\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationRuleFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationRuleFilter\");\n if (input.And !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlReplicationRuleAndOperator(input.And, context).withName(\"And\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Prefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.Tag !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlTag(input.Tag, context).withName(\"Tag\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationRules = function (input, context) {\n var e_16, _a;\n var collectedNodes = [];\n try {\n for (var input_16 = __values(input), input_16_1 = input_16.next(); !input_16_1.done; input_16_1 = input_16.next()) {\n var entry = input_16_1.value;\n var node = serializeAws_restXmlReplicationRule(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_16_1) { e_16 = { error: e_16_1 }; }\n finally {\n try {\n if (input_16_1 && !input_16_1.done && (_a = input_16.return)) _a.call(input_16);\n }\n finally { if (e_16) throw e_16.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlReplicationTime = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationTime\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ReplicationTimeStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n if (input.Time !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlReplicationTimeValue(input.Time, context).withName(\"Time\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlReplicationTimeValue = function (input, context) {\n var bodyNode = new __XmlNode(\"ReplicationTimeValue\");\n if (input.Minutes !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Minutes\")\n .addChildNode(new __XmlText(String(input.Minutes)))\n .withName(\"Minutes\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRequestPaymentConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"RequestPaymentConfiguration\");\n if (input.Payer !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Payer\")\n .addChildNode(new __XmlText(input.Payer))\n .withName(\"Payer\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRequestProgress = function (input, context) {\n var bodyNode = new __XmlNode(\"RequestProgress\");\n if (input.Enabled !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"EnableRequestProgress\")\n .addChildNode(new __XmlText(String(input.Enabled)))\n .withName(\"Enabled\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRestoreRequest = function (input, context) {\n var bodyNode = new __XmlNode(\"RestoreRequest\");\n if (input.Days !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.Days)))\n .withName(\"Days\"));\n }\n if (input.Description !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Description\")\n .addChildNode(new __XmlText(input.Description))\n .withName(\"Description\"));\n }\n if (input.GlacierJobParameters !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlGlacierJobParameters(input.GlacierJobParameters, context).withName(\"GlacierJobParameters\"));\n }\n if (input.OutputLocation !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlOutputLocation(input.OutputLocation, context).withName(\"OutputLocation\"));\n }\n if (input.SelectParameters !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlSelectParameters(input.SelectParameters, context).withName(\"SelectParameters\"));\n }\n if (input.Tier !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Tier\")\n .addChildNode(new __XmlText(input.Tier))\n .withName(\"Tier\"));\n }\n if (input.Type !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"RestoreRequestType\")\n .addChildNode(new __XmlText(input.Type))\n .withName(\"Type\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRoutingRule = function (input, context) {\n var bodyNode = new __XmlNode(\"RoutingRule\");\n if (input.Condition !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlCondition(input.Condition, context).withName(\"Condition\"));\n }\n if (input.Redirect !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlRedirect(input.Redirect, context).withName(\"Redirect\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlRoutingRules = function (input, context) {\n var e_17, _a;\n var collectedNodes = [];\n try {\n for (var input_17 = __values(input), input_17_1 = input_17.next(); !input_17_1.done; input_17_1 = input_17.next()) {\n var entry = input_17_1.value;\n var node = serializeAws_restXmlRoutingRule(entry, context);\n collectedNodes.push(node.withName(\"RoutingRule\"));\n }\n }\n catch (e_17_1) { e_17 = { error: e_17_1 }; }\n finally {\n try {\n if (input_17_1 && !input_17_1.done && (_a = input_17.return)) _a.call(input_17);\n }\n finally { if (e_17) throw e_17.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlS3KeyFilter = function (input, context) {\n var bodyNode = new __XmlNode(\"S3KeyFilter\");\n if (input.FilterRules !== undefined) {\n var nodes = serializeAws_restXmlFilterRuleList(input.FilterRules, context);\n nodes.map(function (node) {\n node = node.withName(\"FilterRule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlS3Location = function (input, context) {\n var bodyNode = new __XmlNode(\"S3Location\");\n if (input.AccessControlList !== undefined) {\n var nodes = serializeAws_restXmlGrants(input.AccessControlList, context);\n var containerNode_4 = new __XmlNode(\"AccessControlList\");\n nodes.map(function (node) {\n containerNode_4.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_4);\n }\n if (input.BucketName !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketName\")\n .addChildNode(new __XmlText(input.BucketName))\n .withName(\"BucketName\"));\n }\n if (input.CannedACL !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectCannedACL\")\n .addChildNode(new __XmlText(input.CannedACL))\n .withName(\"CannedACL\"));\n }\n if (input.Encryption !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlEncryption(input.Encryption, context).withName(\"Encryption\"));\n }\n if (input.Prefix !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"LocationPrefix\")\n .addChildNode(new __XmlText(input.Prefix))\n .withName(\"Prefix\"));\n }\n if (input.StorageClass !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"StorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\"));\n }\n if (input.Tagging !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlTagging(input.Tagging, context).withName(\"Tagging\"));\n }\n if (input.UserMetadata !== undefined) {\n var nodes = serializeAws_restXmlUserMetadata(input.UserMetadata, context);\n var containerNode_5 = new __XmlNode(\"UserMetadata\");\n nodes.map(function (node) {\n containerNode_5.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_5);\n }\n return bodyNode;\n};\nvar serializeAws_restXmlSSEKMS = function (input, context) {\n var bodyNode = new __XmlNode(\"SSE-KMS\");\n if (input.KeyId !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"SSEKMSKeyId\")\n .addChildNode(new __XmlText(input.KeyId))\n .withName(\"KeyId\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlSSES3 = function (input, context) {\n var bodyNode = new __XmlNode(\"SSE-S3\");\n return bodyNode;\n};\nvar serializeAws_restXmlScanRange = function (input, context) {\n var bodyNode = new __XmlNode(\"ScanRange\");\n if (input.End !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"End\")\n .addChildNode(new __XmlText(String(input.End)))\n .withName(\"End\"));\n }\n if (input.Start !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Start\")\n .addChildNode(new __XmlText(String(input.Start)))\n .withName(\"Start\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlSelectParameters = function (input, context) {\n var bodyNode = new __XmlNode(\"SelectParameters\");\n if (input.Expression !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Expression\")\n .addChildNode(new __XmlText(input.Expression))\n .withName(\"Expression\"));\n }\n if (input.ExpressionType !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ExpressionType\")\n .addChildNode(new __XmlText(input.ExpressionType))\n .withName(\"ExpressionType\"));\n }\n if (input.InputSerialization !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlInputSerialization(input.InputSerialization, context).withName(\"InputSerialization\"));\n }\n if (input.OutputSerialization !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlOutputSerialization(input.OutputSerialization, context).withName(\"OutputSerialization\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlServerSideEncryptionByDefault = function (input, context) {\n var bodyNode = new __XmlNode(\"ServerSideEncryptionByDefault\");\n if (input.KMSMasterKeyID !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"SSEKMSKeyId\")\n .addChildNode(new __XmlText(input.KMSMasterKeyID))\n .withName(\"KMSMasterKeyID\"));\n }\n if (input.SSEAlgorithm !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ServerSideEncryption\")\n .addChildNode(new __XmlText(input.SSEAlgorithm))\n .withName(\"SSEAlgorithm\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlServerSideEncryptionConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"ServerSideEncryptionConfiguration\");\n if (input.Rules !== undefined) {\n var nodes = serializeAws_restXmlServerSideEncryptionRules(input.Rules, context);\n nodes.map(function (node) {\n node = node.withName(\"Rule\");\n bodyNode.addChildNode(node);\n });\n }\n return bodyNode;\n};\nvar serializeAws_restXmlServerSideEncryptionRule = function (input, context) {\n var bodyNode = new __XmlNode(\"ServerSideEncryptionRule\");\n if (input.ApplyServerSideEncryptionByDefault !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlServerSideEncryptionByDefault(input.ApplyServerSideEncryptionByDefault, context).withName(\"ApplyServerSideEncryptionByDefault\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlServerSideEncryptionRules = function (input, context) {\n var e_18, _a;\n var collectedNodes = [];\n try {\n for (var input_18 = __values(input), input_18_1 = input_18.next(); !input_18_1.done; input_18_1 = input_18.next()) {\n var entry = input_18_1.value;\n var node = serializeAws_restXmlServerSideEncryptionRule(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_18_1) { e_18 = { error: e_18_1 }; }\n finally {\n try {\n if (input_18_1 && !input_18_1.done && (_a = input_18.return)) _a.call(input_18);\n }\n finally { if (e_18) throw e_18.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlSourceSelectionCriteria = function (input, context) {\n var bodyNode = new __XmlNode(\"SourceSelectionCriteria\");\n if (input.SseKmsEncryptedObjects !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlSseKmsEncryptedObjects(input.SseKmsEncryptedObjects, context).withName(\"SseKmsEncryptedObjects\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlSseKmsEncryptedObjects = function (input, context) {\n var bodyNode = new __XmlNode(\"SseKmsEncryptedObjects\");\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"SseKmsEncryptedObjectsStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlStorageClassAnalysis = function (input, context) {\n var bodyNode = new __XmlNode(\"StorageClassAnalysis\");\n if (input.DataExport !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlStorageClassAnalysisDataExport(input.DataExport, context).withName(\"DataExport\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlStorageClassAnalysisDataExport = function (input, context) {\n var bodyNode = new __XmlNode(\"StorageClassAnalysisDataExport\");\n if (input.Destination !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlAnalyticsExportDestination(input.Destination, context).withName(\"Destination\"));\n }\n if (input.OutputSchemaVersion !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"StorageClassAnalysisSchemaVersion\")\n .addChildNode(new __XmlText(input.OutputSchemaVersion))\n .withName(\"OutputSchemaVersion\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTag = function (input, context) {\n var bodyNode = new __XmlNode(\"Tag\");\n if (input.Key !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"ObjectKey\")\n .addChildNode(new __XmlText(input.Key))\n .withName(\"Key\"));\n }\n if (input.Value !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Value\")\n .addChildNode(new __XmlText(input.Value))\n .withName(\"Value\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTagSet = function (input, context) {\n var e_19, _a;\n var collectedNodes = [];\n try {\n for (var input_19 = __values(input), input_19_1 = input_19.next(); !input_19_1.done; input_19_1 = input_19.next()) {\n var entry = input_19_1.value;\n var node = serializeAws_restXmlTag(entry, context);\n collectedNodes.push(node.withName(\"Tag\"));\n }\n }\n catch (e_19_1) { e_19 = { error: e_19_1 }; }\n finally {\n try {\n if (input_19_1 && !input_19_1.done && (_a = input_19.return)) _a.call(input_19);\n }\n finally { if (e_19) throw e_19.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlTagging = function (input, context) {\n var bodyNode = new __XmlNode(\"Tagging\");\n if (input.TagSet !== undefined) {\n var nodes = serializeAws_restXmlTagSet(input.TagSet, context);\n var containerNode_6 = new __XmlNode(\"TagSet\");\n nodes.map(function (node) {\n containerNode_6.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_6);\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTargetGrant = function (input, context) {\n var bodyNode = new __XmlNode(\"TargetGrant\");\n if (input.Grantee !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlGrantee(input.Grantee, context).withName(\"Grantee\"));\n }\n if (input.Permission !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketLogsPermission\")\n .addChildNode(new __XmlText(input.Permission))\n .withName(\"Permission\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTargetGrants = function (input, context) {\n var e_20, _a;\n var collectedNodes = [];\n try {\n for (var input_20 = __values(input), input_20_1 = input_20.next(); !input_20_1.done; input_20_1 = input_20.next()) {\n var entry = input_20_1.value;\n var node = serializeAws_restXmlTargetGrant(entry, context);\n collectedNodes.push(node.withName(\"Grant\"));\n }\n }\n catch (e_20_1) { e_20 = { error: e_20_1 }; }\n finally {\n try {\n if (input_20_1 && !input_20_1.done && (_a = input_20.return)) _a.call(input_20);\n }\n finally { if (e_20) throw e_20.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlTopicConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"TopicConfiguration\");\n if (input.Events !== undefined) {\n var nodes = serializeAws_restXmlEventList(input.Events, context);\n nodes.map(function (node) {\n node = node.withName(\"Event\");\n bodyNode.addChildNode(node);\n });\n }\n if (input.Filter !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlNotificationConfigurationFilter(input.Filter, context).withName(\"Filter\"));\n }\n if (input.Id !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"NotificationId\")\n .addChildNode(new __XmlText(input.Id))\n .withName(\"Id\"));\n }\n if (input.TopicArn !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"TopicArn\")\n .addChildNode(new __XmlText(input.TopicArn))\n .withName(\"Topic\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTopicConfigurationList = function (input, context) {\n var e_21, _a;\n var collectedNodes = [];\n try {\n for (var input_21 = __values(input), input_21_1 = input_21.next(); !input_21_1.done; input_21_1 = input_21.next()) {\n var entry = input_21_1.value;\n var node = serializeAws_restXmlTopicConfiguration(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_21_1) { e_21 = { error: e_21_1 }; }\n finally {\n try {\n if (input_21_1 && !input_21_1.done && (_a = input_21.return)) _a.call(input_21);\n }\n finally { if (e_21) throw e_21.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlTransition = function (input, context) {\n var bodyNode = new __XmlNode(\"Transition\");\n if (input.Date !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Date\")\n .addChildNode(new __XmlText(input.Date.toISOString().split(\".\")[0] + \"Z\"))\n .withName(\"Date\"));\n }\n if (input.Days !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"Days\")\n .addChildNode(new __XmlText(String(input.Days)))\n .withName(\"Days\"));\n }\n if (input.StorageClass !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"TransitionStorageClass\")\n .addChildNode(new __XmlText(input.StorageClass))\n .withName(\"StorageClass\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlTransitionList = function (input, context) {\n var e_22, _a;\n var collectedNodes = [];\n try {\n for (var input_22 = __values(input), input_22_1 = input_22.next(); !input_22_1.done; input_22_1 = input_22.next()) {\n var entry = input_22_1.value;\n var node = serializeAws_restXmlTransition(entry, context);\n collectedNodes.push(node.withName(\"member\"));\n }\n }\n catch (e_22_1) { e_22 = { error: e_22_1 }; }\n finally {\n try {\n if (input_22_1 && !input_22_1.done && (_a = input_22.return)) _a.call(input_22);\n }\n finally { if (e_22) throw e_22.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlUserMetadata = function (input, context) {\n var e_23, _a;\n var collectedNodes = [];\n try {\n for (var input_23 = __values(input), input_23_1 = input_23.next(); !input_23_1.done; input_23_1 = input_23.next()) {\n var entry = input_23_1.value;\n var node = serializeAws_restXmlMetadataEntry(entry, context);\n collectedNodes.push(node.withName(\"MetadataEntry\"));\n }\n }\n catch (e_23_1) { e_23 = { error: e_23_1 }; }\n finally {\n try {\n if (input_23_1 && !input_23_1.done && (_a = input_23.return)) _a.call(input_23);\n }\n finally { if (e_23) throw e_23.error; }\n }\n return collectedNodes;\n};\nvar serializeAws_restXmlVersioningConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"VersioningConfiguration\");\n if (input.MFADelete !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"MFADelete\")\n .addChildNode(new __XmlText(input.MFADelete))\n .withName(\"MfaDelete\"));\n }\n if (input.Status !== undefined) {\n bodyNode.addChildNode(new __XmlNode(\"BucketVersioningStatus\")\n .addChildNode(new __XmlText(input.Status))\n .withName(\"Status\"));\n }\n return bodyNode;\n};\nvar serializeAws_restXmlWebsiteConfiguration = function (input, context) {\n var bodyNode = new __XmlNode(\"WebsiteConfiguration\");\n if (input.ErrorDocument !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlErrorDocument(input.ErrorDocument, context).withName(\"ErrorDocument\"));\n }\n if (input.IndexDocument !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlIndexDocument(input.IndexDocument, context).withName(\"IndexDocument\"));\n }\n if (input.RedirectAllRequestsTo !== undefined) {\n bodyNode.addChildNode(serializeAws_restXmlRedirectAllRequestsTo(input.RedirectAllRequestsTo, context).withName(\"RedirectAllRequestsTo\"));\n }\n if (input.RoutingRules !== undefined) {\n var nodes = serializeAws_restXmlRoutingRules(input.RoutingRules, context);\n var containerNode_7 = new __XmlNode(\"RoutingRules\");\n nodes.map(function (node) {\n containerNode_7.addChildNode(node);\n });\n bodyNode.addChildNode(containerNode_7);\n }\n return bodyNode;\n};\nvar deserializeAws_restXmlAbortIncompleteMultipartUpload = function (output, context) {\n var contents = {\n __type: \"AbortIncompleteMultipartUpload\",\n DaysAfterInitiation: undefined\n };\n if (output[\"DaysAfterInitiation\"] !== undefined) {\n contents.DaysAfterInitiation = parseInt(output[\"DaysAfterInitiation\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlAccessControlTranslation = function (output, context) {\n var contents = {\n __type: \"AccessControlTranslation\",\n Owner: undefined\n };\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = output[\"Owner\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlAllowedHeaders = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlAllowedMethods = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlAllowedOrigins = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsAndOperator = function (output, context) {\n var contents = {\n __type: \"AnalyticsAndOperator\",\n Prefix: undefined,\n Tags: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n var wrappedItem = output[\"Tag\"] instanceof Array ? output[\"Tag\"] : [output[\"Tag\"]];\n contents.Tags = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsConfiguration = function (output, context) {\n var contents = {\n __type: \"AnalyticsConfiguration\",\n Filter: undefined,\n Id: undefined,\n StorageClassAnalysis: undefined\n };\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlAnalyticsFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"StorageClassAnalysis\"] !== undefined) {\n contents.StorageClassAnalysis = deserializeAws_restXmlStorageClassAnalysis(output[\"StorageClassAnalysis\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlAnalyticsConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsExportDestination = function (output, context) {\n var contents = {\n __type: \"AnalyticsExportDestination\",\n S3BucketDestination: undefined\n };\n if (output[\"S3BucketDestination\"] !== undefined) {\n contents.S3BucketDestination = deserializeAws_restXmlAnalyticsS3BucketDestination(output[\"S3BucketDestination\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsFilter = function (output, context) {\n var contents = {\n __type: \"AnalyticsFilter\",\n And: undefined,\n Prefix: undefined,\n Tag: undefined\n };\n if (output[\"And\"] !== undefined) {\n contents.And = deserializeAws_restXmlAnalyticsAndOperator(output[\"And\"], context);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tag = deserializeAws_restXmlTag(output[\"Tag\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlAnalyticsS3BucketDestination = function (output, context) {\n var contents = {\n __type: \"AnalyticsS3BucketDestination\",\n Bucket: undefined,\n BucketAccountId: undefined,\n Format: undefined,\n Prefix: undefined\n };\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"BucketAccountId\"] !== undefined) {\n contents.BucketAccountId = output[\"BucketAccountId\"];\n }\n if (output[\"Format\"] !== undefined) {\n contents.Format = output[\"Format\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlBucket = function (output, context) {\n var contents = {\n __type: \"Bucket\",\n CreationDate: undefined,\n Name: undefined\n };\n if (output[\"CreationDate\"] !== undefined) {\n contents.CreationDate = new Date(output[\"CreationDate\"]);\n }\n if (output[\"Name\"] !== undefined) {\n contents.Name = output[\"Name\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlBuckets = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlBucket(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlCORSRule = function (output, context) {\n var contents = {\n __type: \"CORSRule\",\n AllowedHeaders: undefined,\n AllowedMethods: undefined,\n AllowedOrigins: undefined,\n ExposeHeaders: undefined,\n MaxAgeSeconds: undefined\n };\n if (output.AllowedHeader === \"\") {\n contents.AllowedHeaders = [];\n }\n if (output[\"AllowedHeader\"] !== undefined) {\n var wrappedItem = output[\"AllowedHeader\"] instanceof Array\n ? output[\"AllowedHeader\"]\n : [output[\"AllowedHeader\"]];\n contents.AllowedHeaders = deserializeAws_restXmlAllowedHeaders(wrappedItem, context);\n }\n if (output.AllowedMethod === \"\") {\n contents.AllowedMethods = [];\n }\n if (output[\"AllowedMethod\"] !== undefined) {\n var wrappedItem = output[\"AllowedMethod\"] instanceof Array\n ? output[\"AllowedMethod\"]\n : [output[\"AllowedMethod\"]];\n contents.AllowedMethods = deserializeAws_restXmlAllowedMethods(wrappedItem, context);\n }\n if (output.AllowedOrigin === \"\") {\n contents.AllowedOrigins = [];\n }\n if (output[\"AllowedOrigin\"] !== undefined) {\n var wrappedItem = output[\"AllowedOrigin\"] instanceof Array\n ? output[\"AllowedOrigin\"]\n : [output[\"AllowedOrigin\"]];\n contents.AllowedOrigins = deserializeAws_restXmlAllowedOrigins(wrappedItem, context);\n }\n if (output.ExposeHeader === \"\") {\n contents.ExposeHeaders = [];\n }\n if (output[\"ExposeHeader\"] !== undefined) {\n var wrappedItem = output[\"ExposeHeader\"] instanceof Array\n ? output[\"ExposeHeader\"]\n : [output[\"ExposeHeader\"]];\n contents.ExposeHeaders = deserializeAws_restXmlExposeHeaders(wrappedItem, context);\n }\n if (output[\"MaxAgeSeconds\"] !== undefined) {\n contents.MaxAgeSeconds = parseInt(output[\"MaxAgeSeconds\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlCORSRules = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlCORSRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlCommonPrefix = function (output, context) {\n var contents = {\n __type: \"CommonPrefix\",\n Prefix: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlCommonPrefixList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlCommonPrefix(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlCondition = function (output, context) {\n var contents = {\n __type: \"Condition\",\n HttpErrorCodeReturnedEquals: undefined,\n KeyPrefixEquals: undefined\n };\n if (output[\"HttpErrorCodeReturnedEquals\"] !== undefined) {\n contents.HttpErrorCodeReturnedEquals =\n output[\"HttpErrorCodeReturnedEquals\"];\n }\n if (output[\"KeyPrefixEquals\"] !== undefined) {\n contents.KeyPrefixEquals = output[\"KeyPrefixEquals\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlCopyObjectResult = function (output, context) {\n var contents = {\n __type: \"CopyObjectResult\",\n ETag: undefined,\n LastModified: undefined\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlCopyPartResult = function (output, context) {\n var contents = {\n __type: \"CopyPartResult\",\n ETag: undefined,\n LastModified: undefined\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlDefaultRetention = function (output, context) {\n var contents = {\n __type: \"DefaultRetention\",\n Days: undefined,\n Mode: undefined,\n Years: undefined\n };\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"Mode\"] !== undefined) {\n contents.Mode = output[\"Mode\"];\n }\n if (output[\"Years\"] !== undefined) {\n contents.Years = parseInt(output[\"Years\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlDeleteMarkerEntry = function (output, context) {\n var contents = {\n __type: \"DeleteMarkerEntry\",\n IsLatest: undefined,\n Key: undefined,\n LastModified: undefined,\n Owner: undefined,\n VersionId: undefined\n };\n if (output[\"IsLatest\"] !== undefined) {\n contents.IsLatest = output[\"IsLatest\"] == \"true\";\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlDeleteMarkerReplication = function (output, context) {\n var contents = {\n __type: \"DeleteMarkerReplication\",\n Status: undefined\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlDeleteMarkers = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlDeleteMarkerEntry(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlDeletedObject = function (output, context) {\n var contents = {\n __type: \"DeletedObject\",\n DeleteMarker: undefined,\n DeleteMarkerVersionId: undefined,\n Key: undefined,\n VersionId: undefined\n };\n if (output[\"DeleteMarker\"] !== undefined) {\n contents.DeleteMarker = output[\"DeleteMarker\"] == \"true\";\n }\n if (output[\"DeleteMarkerVersionId\"] !== undefined) {\n contents.DeleteMarkerVersionId = output[\"DeleteMarkerVersionId\"];\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlDeletedObjects = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlDeletedObject(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlDestination = function (output, context) {\n var contents = {\n __type: \"Destination\",\n AccessControlTranslation: undefined,\n Account: undefined,\n Bucket: undefined,\n EncryptionConfiguration: undefined,\n Metrics: undefined,\n ReplicationTime: undefined,\n StorageClass: undefined\n };\n if (output[\"AccessControlTranslation\"] !== undefined) {\n contents.AccessControlTranslation = deserializeAws_restXmlAccessControlTranslation(output[\"AccessControlTranslation\"], context);\n }\n if (output[\"Account\"] !== undefined) {\n contents.Account = output[\"Account\"];\n }\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"EncryptionConfiguration\"] !== undefined) {\n contents.EncryptionConfiguration = deserializeAws_restXmlEncryptionConfiguration(output[\"EncryptionConfiguration\"], context);\n }\n if (output[\"Metrics\"] !== undefined) {\n contents.Metrics = deserializeAws_restXmlMetrics(output[\"Metrics\"], context);\n }\n if (output[\"ReplicationTime\"] !== undefined) {\n contents.ReplicationTime = deserializeAws_restXmlReplicationTime(output[\"ReplicationTime\"], context);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlEncryptionConfiguration = function (output, context) {\n var contents = {\n __type: \"EncryptionConfiguration\",\n ReplicaKmsKeyID: undefined\n };\n if (output[\"ReplicaKmsKeyID\"] !== undefined) {\n contents.ReplicaKmsKeyID = output[\"ReplicaKmsKeyID\"];\n }\n return contents;\n};\nvar deserializeAws_restXml_Error = function (output, context) {\n var contents = {\n __type: \"Error\",\n Code: undefined,\n Key: undefined,\n Message: undefined,\n VersionId: undefined\n };\n if (output[\"Code\"] !== undefined) {\n contents.Code = output[\"Code\"];\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"Message\"] !== undefined) {\n contents.Message = output[\"Message\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlErrorDocument = function (output, context) {\n var contents = {\n __type: \"ErrorDocument\",\n Key: undefined\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlErrors = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXml_Error(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlEventList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlExistingObjectReplication = function (output, context) {\n var contents = {\n __type: \"ExistingObjectReplication\",\n Status: undefined\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlExposeHeaders = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlFilterRule = function (output, context) {\n var contents = {\n __type: \"FilterRule\",\n Name: undefined,\n Value: undefined\n };\n if (output[\"Name\"] !== undefined) {\n contents.Name = output[\"Name\"];\n }\n if (output[\"Value\"] !== undefined) {\n contents.Value = output[\"Value\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlFilterRuleList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlFilterRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlGrant = function (output, context) {\n var contents = {\n __type: \"Grant\",\n Grantee: undefined,\n Permission: undefined\n };\n if (output[\"Grantee\"] !== undefined) {\n contents.Grantee = deserializeAws_restXmlGrantee(output[\"Grantee\"], context);\n }\n if (output[\"Permission\"] !== undefined) {\n contents.Permission = output[\"Permission\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlGrantee = function (output, context) {\n var contents = {\n __type: \"Grantee\",\n DisplayName: undefined,\n EmailAddress: undefined,\n ID: undefined,\n Type: undefined,\n URI: undefined\n };\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n if (output[\"EmailAddress\"] !== undefined) {\n contents.EmailAddress = output[\"EmailAddress\"];\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"xsi:type\"] !== undefined) {\n contents.Type = output[\"xsi:type\"];\n }\n if (output[\"URI\"] !== undefined) {\n contents.URI = output[\"URI\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlGrants = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlGrant(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlIndexDocument = function (output, context) {\n var contents = {\n __type: \"IndexDocument\",\n Suffix: undefined\n };\n if (output[\"Suffix\"] !== undefined) {\n contents.Suffix = output[\"Suffix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlInitiator = function (output, context) {\n var contents = {\n __type: \"Initiator\",\n DisplayName: undefined,\n ID: undefined\n };\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlInventoryConfiguration = function (output, context) {\n var contents = {\n __type: \"InventoryConfiguration\",\n Destination: undefined,\n Filter: undefined,\n Id: undefined,\n IncludedObjectVersions: undefined,\n IsEnabled: undefined,\n OptionalFields: undefined,\n Schedule: undefined\n };\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlInventoryDestination(output[\"Destination\"], context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlInventoryFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"IncludedObjectVersions\"] !== undefined) {\n contents.IncludedObjectVersions = output[\"IncludedObjectVersions\"];\n }\n if (output[\"IsEnabled\"] !== undefined) {\n contents.IsEnabled = output[\"IsEnabled\"] == \"true\";\n }\n if (output.OptionalFields === \"\") {\n contents.OptionalFields = [];\n }\n if (output[\"OptionalFields\"] !== undefined &&\n output[\"OptionalFields\"][\"Field\"] !== undefined) {\n var wrappedItem = output[\"OptionalFields\"][\"Field\"] instanceof Array\n ? output[\"OptionalFields\"][\"Field\"]\n : [output[\"OptionalFields\"][\"Field\"]];\n contents.OptionalFields = deserializeAws_restXmlInventoryOptionalFields(wrappedItem, context);\n }\n if (output[\"Schedule\"] !== undefined) {\n contents.Schedule = deserializeAws_restXmlInventorySchedule(output[\"Schedule\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlInventoryConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlInventoryConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlInventoryDestination = function (output, context) {\n var contents = {\n __type: \"InventoryDestination\",\n S3BucketDestination: undefined\n };\n if (output[\"S3BucketDestination\"] !== undefined) {\n contents.S3BucketDestination = deserializeAws_restXmlInventoryS3BucketDestination(output[\"S3BucketDestination\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlInventoryEncryption = function (output, context) {\n var contents = {\n __type: \"InventoryEncryption\",\n SSEKMS: undefined,\n SSES3: undefined\n };\n if (output[\"SSE-KMS\"] !== undefined) {\n contents.SSEKMS = deserializeAws_restXmlSSEKMS(output[\"SSE-KMS\"], context);\n }\n if (output[\"SSE-S3\"] !== undefined) {\n contents.SSES3 = deserializeAws_restXmlSSES3(output[\"SSE-S3\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlInventoryFilter = function (output, context) {\n var contents = {\n __type: \"InventoryFilter\",\n Prefix: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlInventoryOptionalFields = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(entry);\n });\n return contents;\n};\nvar deserializeAws_restXmlInventoryS3BucketDestination = function (output, context) {\n var contents = {\n __type: \"InventoryS3BucketDestination\",\n AccountId: undefined,\n Bucket: undefined,\n Encryption: undefined,\n Format: undefined,\n Prefix: undefined\n };\n if (output[\"AccountId\"] !== undefined) {\n contents.AccountId = output[\"AccountId\"];\n }\n if (output[\"Bucket\"] !== undefined) {\n contents.Bucket = output[\"Bucket\"];\n }\n if (output[\"Encryption\"] !== undefined) {\n contents.Encryption = deserializeAws_restXmlInventoryEncryption(output[\"Encryption\"], context);\n }\n if (output[\"Format\"] !== undefined) {\n contents.Format = output[\"Format\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlInventorySchedule = function (output, context) {\n var contents = {\n __type: \"InventorySchedule\",\n Frequency: undefined\n };\n if (output[\"Frequency\"] !== undefined) {\n contents.Frequency = output[\"Frequency\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlLambdaFunctionConfiguration = function (output, context) {\n var contents = {\n __type: \"LambdaFunctionConfiguration\",\n Events: undefined,\n Filter: undefined,\n Id: undefined,\n LambdaFunctionArn: undefined\n };\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n var wrappedItem = output[\"Event\"] instanceof Array ? output[\"Event\"] : [output[\"Event\"]];\n contents.Events = deserializeAws_restXmlEventList(wrappedItem, context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"CloudFunction\"] !== undefined) {\n contents.LambdaFunctionArn = output[\"CloudFunction\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlLambdaFunctionConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlLambdaFunctionConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlLifecycleExpiration = function (output, context) {\n var contents = {\n __type: \"LifecycleExpiration\",\n Date: undefined,\n Days: undefined,\n ExpiredObjectDeleteMarker: undefined\n };\n if (output[\"Date\"] !== undefined) {\n contents.Date = new Date(output[\"Date\"]);\n }\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"ExpiredObjectDeleteMarker\"] !== undefined) {\n contents.ExpiredObjectDeleteMarker =\n output[\"ExpiredObjectDeleteMarker\"] == \"true\";\n }\n return contents;\n};\nvar deserializeAws_restXmlLifecycleRule = function (output, context) {\n var contents = {\n __type: \"LifecycleRule\",\n AbortIncompleteMultipartUpload: undefined,\n Expiration: undefined,\n Filter: undefined,\n ID: undefined,\n NoncurrentVersionExpiration: undefined,\n NoncurrentVersionTransitions: undefined,\n Prefix: undefined,\n Status: undefined,\n Transitions: undefined\n };\n if (output[\"AbortIncompleteMultipartUpload\"] !== undefined) {\n contents.AbortIncompleteMultipartUpload = deserializeAws_restXmlAbortIncompleteMultipartUpload(output[\"AbortIncompleteMultipartUpload\"], context);\n }\n if (output[\"Expiration\"] !== undefined) {\n contents.Expiration = deserializeAws_restXmlLifecycleExpiration(output[\"Expiration\"], context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlLifecycleRuleFilter(output[\"Filter\"], context);\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"NoncurrentVersionExpiration\"] !== undefined) {\n contents.NoncurrentVersionExpiration = deserializeAws_restXmlNoncurrentVersionExpiration(output[\"NoncurrentVersionExpiration\"], context);\n }\n if (output.NoncurrentVersionTransition === \"\") {\n contents.NoncurrentVersionTransitions = [];\n }\n if (output[\"NoncurrentVersionTransition\"] !== undefined) {\n var wrappedItem = output[\"NoncurrentVersionTransition\"] instanceof Array\n ? output[\"NoncurrentVersionTransition\"]\n : [output[\"NoncurrentVersionTransition\"]];\n contents.NoncurrentVersionTransitions = deserializeAws_restXmlNoncurrentVersionTransitionList(wrappedItem, context);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output.Transition === \"\") {\n contents.Transitions = [];\n }\n if (output[\"Transition\"] !== undefined) {\n var wrappedItem = output[\"Transition\"] instanceof Array\n ? output[\"Transition\"]\n : [output[\"Transition\"]];\n contents.Transitions = deserializeAws_restXmlTransitionList(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlLifecycleRuleAndOperator = function (output, context) {\n var contents = {\n __type: \"LifecycleRuleAndOperator\",\n Prefix: undefined,\n Tags: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n var wrappedItem = output[\"Tag\"] instanceof Array ? output[\"Tag\"] : [output[\"Tag\"]];\n contents.Tags = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlLifecycleRuleFilter = function (output, context) {\n var contents = {\n __type: \"LifecycleRuleFilter\",\n And: undefined,\n Prefix: undefined,\n Tag: undefined\n };\n if (output[\"And\"] !== undefined) {\n contents.And = deserializeAws_restXmlLifecycleRuleAndOperator(output[\"And\"], context);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tag = deserializeAws_restXmlTag(output[\"Tag\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlLifecycleRules = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlLifecycleRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlLoggingEnabled = function (output, context) {\n var contents = {\n __type: \"LoggingEnabled\",\n TargetBucket: undefined,\n TargetGrants: undefined,\n TargetPrefix: undefined\n };\n if (output[\"TargetBucket\"] !== undefined) {\n contents.TargetBucket = output[\"TargetBucket\"];\n }\n if (output.TargetGrants === \"\") {\n contents.TargetGrants = [];\n }\n if (output[\"TargetGrants\"] !== undefined &&\n output[\"TargetGrants\"][\"Grant\"] !== undefined) {\n var wrappedItem = output[\"TargetGrants\"][\"Grant\"] instanceof Array\n ? output[\"TargetGrants\"][\"Grant\"]\n : [output[\"TargetGrants\"][\"Grant\"]];\n contents.TargetGrants = deserializeAws_restXmlTargetGrants(wrappedItem, context);\n }\n if (output[\"TargetPrefix\"] !== undefined) {\n contents.TargetPrefix = output[\"TargetPrefix\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlMetrics = function (output, context) {\n var contents = {\n __type: \"Metrics\",\n EventThreshold: undefined,\n Status: undefined\n };\n if (output[\"EventThreshold\"] !== undefined) {\n contents.EventThreshold = deserializeAws_restXmlReplicationTimeValue(output[\"EventThreshold\"], context);\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlMetricsAndOperator = function (output, context) {\n var contents = {\n __type: \"MetricsAndOperator\",\n Prefix: undefined,\n Tags: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n var wrappedItem = output[\"Tag\"] instanceof Array ? output[\"Tag\"] : [output[\"Tag\"]];\n contents.Tags = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlMetricsConfiguration = function (output, context) {\n var contents = {\n __type: \"MetricsConfiguration\",\n Filter: undefined,\n Id: undefined\n };\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlMetricsFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlMetricsConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlMetricsConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlMetricsFilter = function (output, context) {\n var contents = {\n __type: \"MetricsFilter\",\n And: undefined,\n Prefix: undefined,\n Tag: undefined\n };\n if (output[\"And\"] !== undefined) {\n contents.And = deserializeAws_restXmlMetricsAndOperator(output[\"And\"], context);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tag = deserializeAws_restXmlTag(output[\"Tag\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlMultipartUpload = function (output, context) {\n var contents = {\n __type: \"MultipartUpload\",\n Initiated: undefined,\n Initiator: undefined,\n Key: undefined,\n Owner: undefined,\n StorageClass: undefined,\n UploadId: undefined\n };\n if (output[\"Initiated\"] !== undefined) {\n contents.Initiated = new Date(output[\"Initiated\"]);\n }\n if (output[\"Initiator\"] !== undefined) {\n contents.Initiator = deserializeAws_restXmlInitiator(output[\"Initiator\"], context);\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"UploadId\"] !== undefined) {\n contents.UploadId = output[\"UploadId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlMultipartUploadList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlMultipartUpload(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlNoncurrentVersionExpiration = function (output, context) {\n var contents = {\n __type: \"NoncurrentVersionExpiration\",\n NoncurrentDays: undefined\n };\n if (output[\"NoncurrentDays\"] !== undefined) {\n contents.NoncurrentDays = parseInt(output[\"NoncurrentDays\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlNoncurrentVersionTransition = function (output, context) {\n var contents = {\n __type: \"NoncurrentVersionTransition\",\n NoncurrentDays: undefined,\n StorageClass: undefined\n };\n if (output[\"NoncurrentDays\"] !== undefined) {\n contents.NoncurrentDays = parseInt(output[\"NoncurrentDays\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlNoncurrentVersionTransitionList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlNoncurrentVersionTransition(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlNotificationConfigurationFilter = function (output, context) {\n var contents = {\n __type: \"NotificationConfigurationFilter\",\n Key: undefined\n };\n if (output[\"S3Key\"] !== undefined) {\n contents.Key = deserializeAws_restXmlS3KeyFilter(output[\"S3Key\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXml_Object = function (output, context) {\n var contents = {\n __type: \"Object\",\n ETag: undefined,\n Key: undefined,\n LastModified: undefined,\n Owner: undefined,\n Size: undefined,\n StorageClass: undefined\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXml_Object(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlObjectLockConfiguration = function (output, context) {\n var contents = {\n __type: \"ObjectLockConfiguration\",\n ObjectLockEnabled: undefined,\n Rule: undefined\n };\n if (output[\"ObjectLockEnabled\"] !== undefined) {\n contents.ObjectLockEnabled = output[\"ObjectLockEnabled\"];\n }\n if (output[\"Rule\"] !== undefined) {\n contents.Rule = deserializeAws_restXmlObjectLockRule(output[\"Rule\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectLockLegalHold = function (output, context) {\n var contents = {\n __type: \"ObjectLockLegalHold\",\n Status: undefined\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectLockRetention = function (output, context) {\n var contents = {\n __type: \"ObjectLockRetention\",\n Mode: undefined,\n RetainUntilDate: undefined\n };\n if (output[\"Mode\"] !== undefined) {\n contents.Mode = output[\"Mode\"];\n }\n if (output[\"RetainUntilDate\"] !== undefined) {\n contents.RetainUntilDate = new Date(output[\"RetainUntilDate\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectLockRule = function (output, context) {\n var contents = {\n __type: \"ObjectLockRule\",\n DefaultRetention: undefined\n };\n if (output[\"DefaultRetention\"] !== undefined) {\n contents.DefaultRetention = deserializeAws_restXmlDefaultRetention(output[\"DefaultRetention\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectVersion = function (output, context) {\n var contents = {\n __type: \"ObjectVersion\",\n ETag: undefined,\n IsLatest: undefined,\n Key: undefined,\n LastModified: undefined,\n Owner: undefined,\n Size: undefined,\n StorageClass: undefined,\n VersionId: undefined\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"IsLatest\"] !== undefined) {\n contents.IsLatest = output[\"IsLatest\"] == \"true\";\n }\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"Owner\"] !== undefined) {\n contents.Owner = deserializeAws_restXmlOwner(output[\"Owner\"], context);\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n if (output[\"VersionId\"] !== undefined) {\n contents.VersionId = output[\"VersionId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlObjectVersionList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlObjectVersion(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlOwner = function (output, context) {\n var contents = {\n __type: \"Owner\",\n DisplayName: undefined,\n ID: undefined\n };\n if (output[\"DisplayName\"] !== undefined) {\n contents.DisplayName = output[\"DisplayName\"];\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlPart = function (output, context) {\n var contents = {\n __type: \"Part\",\n ETag: undefined,\n LastModified: undefined,\n PartNumber: undefined,\n Size: undefined\n };\n if (output[\"ETag\"] !== undefined) {\n contents.ETag = output[\"ETag\"];\n }\n if (output[\"LastModified\"] !== undefined) {\n contents.LastModified = new Date(output[\"LastModified\"]);\n }\n if (output[\"PartNumber\"] !== undefined) {\n contents.PartNumber = parseInt(output[\"PartNumber\"]);\n }\n if (output[\"Size\"] !== undefined) {\n contents.Size = parseInt(output[\"Size\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlParts = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlPart(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlPolicyStatus = function (output, context) {\n var contents = {\n __type: \"PolicyStatus\",\n IsPublic: undefined\n };\n if (output[\"IsPublic\"] !== undefined) {\n contents.IsPublic = output[\"IsPublic\"] == \"true\";\n }\n return contents;\n};\nvar deserializeAws_restXmlPublicAccessBlockConfiguration = function (output, context) {\n var contents = {\n __type: \"PublicAccessBlockConfiguration\",\n BlockPublicAcls: undefined,\n BlockPublicPolicy: undefined,\n IgnorePublicAcls: undefined,\n RestrictPublicBuckets: undefined\n };\n if (output[\"BlockPublicAcls\"] !== undefined) {\n contents.BlockPublicAcls = output[\"BlockPublicAcls\"] == \"true\";\n }\n if (output[\"BlockPublicPolicy\"] !== undefined) {\n contents.BlockPublicPolicy = output[\"BlockPublicPolicy\"] == \"true\";\n }\n if (output[\"IgnorePublicAcls\"] !== undefined) {\n contents.IgnorePublicAcls = output[\"IgnorePublicAcls\"] == \"true\";\n }\n if (output[\"RestrictPublicBuckets\"] !== undefined) {\n contents.RestrictPublicBuckets = output[\"RestrictPublicBuckets\"] == \"true\";\n }\n return contents;\n};\nvar deserializeAws_restXmlQueueConfiguration = function (output, context) {\n var contents = {\n __type: \"QueueConfiguration\",\n Events: undefined,\n Filter: undefined,\n Id: undefined,\n QueueArn: undefined\n };\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n var wrappedItem = output[\"Event\"] instanceof Array ? output[\"Event\"] : [output[\"Event\"]];\n contents.Events = deserializeAws_restXmlEventList(wrappedItem, context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Queue\"] !== undefined) {\n contents.QueueArn = output[\"Queue\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlQueueConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlQueueConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlRedirect = function (output, context) {\n var contents = {\n __type: \"Redirect\",\n HostName: undefined,\n HttpRedirectCode: undefined,\n Protocol: undefined,\n ReplaceKeyPrefixWith: undefined,\n ReplaceKeyWith: undefined\n };\n if (output[\"HostName\"] !== undefined) {\n contents.HostName = output[\"HostName\"];\n }\n if (output[\"HttpRedirectCode\"] !== undefined) {\n contents.HttpRedirectCode = output[\"HttpRedirectCode\"];\n }\n if (output[\"Protocol\"] !== undefined) {\n contents.Protocol = output[\"Protocol\"];\n }\n if (output[\"ReplaceKeyPrefixWith\"] !== undefined) {\n contents.ReplaceKeyPrefixWith = output[\"ReplaceKeyPrefixWith\"];\n }\n if (output[\"ReplaceKeyWith\"] !== undefined) {\n contents.ReplaceKeyWith = output[\"ReplaceKeyWith\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlRedirectAllRequestsTo = function (output, context) {\n var contents = {\n __type: \"RedirectAllRequestsTo\",\n HostName: undefined,\n Protocol: undefined\n };\n if (output[\"HostName\"] !== undefined) {\n contents.HostName = output[\"HostName\"];\n }\n if (output[\"Protocol\"] !== undefined) {\n contents.Protocol = output[\"Protocol\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationConfiguration = function (output, context) {\n var contents = {\n __type: \"ReplicationConfiguration\",\n Role: undefined,\n Rules: undefined\n };\n if (output[\"Role\"] !== undefined) {\n contents.Role = output[\"Role\"];\n }\n if (output.Rule === \"\") {\n contents.Rules = [];\n }\n if (output[\"Rule\"] !== undefined) {\n var wrappedItem = output[\"Rule\"] instanceof Array ? output[\"Rule\"] : [output[\"Rule\"]];\n contents.Rules = deserializeAws_restXmlReplicationRules(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationRule = function (output, context) {\n var contents = {\n __type: \"ReplicationRule\",\n DeleteMarkerReplication: undefined,\n Destination: undefined,\n ExistingObjectReplication: undefined,\n Filter: undefined,\n ID: undefined,\n Prefix: undefined,\n Priority: undefined,\n SourceSelectionCriteria: undefined,\n Status: undefined\n };\n if (output[\"DeleteMarkerReplication\"] !== undefined) {\n contents.DeleteMarkerReplication = deserializeAws_restXmlDeleteMarkerReplication(output[\"DeleteMarkerReplication\"], context);\n }\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlDestination(output[\"Destination\"], context);\n }\n if (output[\"ExistingObjectReplication\"] !== undefined) {\n contents.ExistingObjectReplication = deserializeAws_restXmlExistingObjectReplication(output[\"ExistingObjectReplication\"], context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlReplicationRuleFilter(output[\"Filter\"], context);\n }\n if (output[\"ID\"] !== undefined) {\n contents.ID = output[\"ID\"];\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Priority\"] !== undefined) {\n contents.Priority = parseInt(output[\"Priority\"]);\n }\n if (output[\"SourceSelectionCriteria\"] !== undefined) {\n contents.SourceSelectionCriteria = deserializeAws_restXmlSourceSelectionCriteria(output[\"SourceSelectionCriteria\"], context);\n }\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationRuleAndOperator = function (output, context) {\n var contents = {\n __type: \"ReplicationRuleAndOperator\",\n Prefix: undefined,\n Tags: undefined\n };\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output.Tag === \"\") {\n contents.Tags = [];\n }\n if (output[\"Tag\"] !== undefined) {\n var wrappedItem = output[\"Tag\"] instanceof Array ? output[\"Tag\"] : [output[\"Tag\"]];\n contents.Tags = deserializeAws_restXmlTagSet(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationRuleFilter = function (output, context) {\n var contents = {\n __type: \"ReplicationRuleFilter\",\n And: undefined,\n Prefix: undefined,\n Tag: undefined\n };\n if (output[\"And\"] !== undefined) {\n contents.And = deserializeAws_restXmlReplicationRuleAndOperator(output[\"And\"], context);\n }\n if (output[\"Prefix\"] !== undefined) {\n contents.Prefix = output[\"Prefix\"];\n }\n if (output[\"Tag\"] !== undefined) {\n contents.Tag = deserializeAws_restXmlTag(output[\"Tag\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationRules = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlReplicationRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlReplicationTime = function (output, context) {\n var contents = {\n __type: \"ReplicationTime\",\n Status: undefined,\n Time: undefined\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n if (output[\"Time\"] !== undefined) {\n contents.Time = deserializeAws_restXmlReplicationTimeValue(output[\"Time\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlReplicationTimeValue = function (output, context) {\n var contents = {\n __type: \"ReplicationTimeValue\",\n Minutes: undefined\n };\n if (output[\"Minutes\"] !== undefined) {\n contents.Minutes = parseInt(output[\"Minutes\"]);\n }\n return contents;\n};\nvar deserializeAws_restXmlRoutingRule = function (output, context) {\n var contents = {\n __type: \"RoutingRule\",\n Condition: undefined,\n Redirect: undefined\n };\n if (output[\"Condition\"] !== undefined) {\n contents.Condition = deserializeAws_restXmlCondition(output[\"Condition\"], context);\n }\n if (output[\"Redirect\"] !== undefined) {\n contents.Redirect = deserializeAws_restXmlRedirect(output[\"Redirect\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlRoutingRules = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlRoutingRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlS3KeyFilter = function (output, context) {\n var contents = {\n __type: \"S3KeyFilter\",\n FilterRules: undefined\n };\n if (output.FilterRule === \"\") {\n contents.FilterRules = [];\n }\n if (output[\"FilterRule\"] !== undefined) {\n var wrappedItem = output[\"FilterRule\"] instanceof Array\n ? output[\"FilterRule\"]\n : [output[\"FilterRule\"]];\n contents.FilterRules = deserializeAws_restXmlFilterRuleList(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlSSEKMS = function (output, context) {\n var contents = {\n __type: \"SSEKMS\",\n KeyId: undefined\n };\n if (output[\"KeyId\"] !== undefined) {\n contents.KeyId = output[\"KeyId\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlSSES3 = function (output, context) {\n var contents = {\n __type: \"SSES3\"\n };\n return contents;\n};\nvar deserializeAws_restXmlServerSideEncryptionByDefault = function (output, context) {\n var contents = {\n __type: \"ServerSideEncryptionByDefault\",\n KMSMasterKeyID: undefined,\n SSEAlgorithm: undefined\n };\n if (output[\"KMSMasterKeyID\"] !== undefined) {\n contents.KMSMasterKeyID = output[\"KMSMasterKeyID\"];\n }\n if (output[\"SSEAlgorithm\"] !== undefined) {\n contents.SSEAlgorithm = output[\"SSEAlgorithm\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlServerSideEncryptionConfiguration = function (output, context) {\n var contents = {\n __type: \"ServerSideEncryptionConfiguration\",\n Rules: undefined\n };\n if (output.Rule === \"\") {\n contents.Rules = [];\n }\n if (output[\"Rule\"] !== undefined) {\n var wrappedItem = output[\"Rule\"] instanceof Array ? output[\"Rule\"] : [output[\"Rule\"]];\n contents.Rules = deserializeAws_restXmlServerSideEncryptionRules(wrappedItem, context);\n }\n return contents;\n};\nvar deserializeAws_restXmlServerSideEncryptionRule = function (output, context) {\n var contents = {\n __type: \"ServerSideEncryptionRule\",\n ApplyServerSideEncryptionByDefault: undefined\n };\n if (output[\"ApplyServerSideEncryptionByDefault\"] !== undefined) {\n contents.ApplyServerSideEncryptionByDefault = deserializeAws_restXmlServerSideEncryptionByDefault(output[\"ApplyServerSideEncryptionByDefault\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlServerSideEncryptionRules = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlServerSideEncryptionRule(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlSourceSelectionCriteria = function (output, context) {\n var contents = {\n __type: \"SourceSelectionCriteria\",\n SseKmsEncryptedObjects: undefined\n };\n if (output[\"SseKmsEncryptedObjects\"] !== undefined) {\n contents.SseKmsEncryptedObjects = deserializeAws_restXmlSseKmsEncryptedObjects(output[\"SseKmsEncryptedObjects\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlSseKmsEncryptedObjects = function (output, context) {\n var contents = {\n __type: \"SseKmsEncryptedObjects\",\n Status: undefined\n };\n if (output[\"Status\"] !== undefined) {\n contents.Status = output[\"Status\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlStorageClassAnalysis = function (output, context) {\n var contents = {\n __type: \"StorageClassAnalysis\",\n DataExport: undefined\n };\n if (output[\"DataExport\"] !== undefined) {\n contents.DataExport = deserializeAws_restXmlStorageClassAnalysisDataExport(output[\"DataExport\"], context);\n }\n return contents;\n};\nvar deserializeAws_restXmlStorageClassAnalysisDataExport = function (output, context) {\n var contents = {\n __type: \"StorageClassAnalysisDataExport\",\n Destination: undefined,\n OutputSchemaVersion: undefined\n };\n if (output[\"Destination\"] !== undefined) {\n contents.Destination = deserializeAws_restXmlAnalyticsExportDestination(output[\"Destination\"], context);\n }\n if (output[\"OutputSchemaVersion\"] !== undefined) {\n contents.OutputSchemaVersion = output[\"OutputSchemaVersion\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlTag = function (output, context) {\n var contents = {\n __type: \"Tag\",\n Key: undefined,\n Value: undefined\n };\n if (output[\"Key\"] !== undefined) {\n contents.Key = output[\"Key\"];\n }\n if (output[\"Value\"] !== undefined) {\n contents.Value = output[\"Value\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlTagSet = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlTag(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlTargetGrant = function (output, context) {\n var contents = {\n __type: \"TargetGrant\",\n Grantee: undefined,\n Permission: undefined\n };\n if (output[\"Grantee\"] !== undefined) {\n contents.Grantee = deserializeAws_restXmlGrantee(output[\"Grantee\"], context);\n }\n if (output[\"Permission\"] !== undefined) {\n contents.Permission = output[\"Permission\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlTargetGrants = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlTargetGrant(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlTopicConfiguration = function (output, context) {\n var contents = {\n __type: \"TopicConfiguration\",\n Events: undefined,\n Filter: undefined,\n Id: undefined,\n TopicArn: undefined\n };\n if (output.Event === \"\") {\n contents.Events = [];\n }\n if (output[\"Event\"] !== undefined) {\n var wrappedItem = output[\"Event\"] instanceof Array ? output[\"Event\"] : [output[\"Event\"]];\n contents.Events = deserializeAws_restXmlEventList(wrappedItem, context);\n }\n if (output[\"Filter\"] !== undefined) {\n contents.Filter = deserializeAws_restXmlNotificationConfigurationFilter(output[\"Filter\"], context);\n }\n if (output[\"Id\"] !== undefined) {\n contents.Id = output[\"Id\"];\n }\n if (output[\"Topic\"] !== undefined) {\n contents.TopicArn = output[\"Topic\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlTopicConfigurationList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlTopicConfiguration(entry, context));\n });\n return contents;\n};\nvar deserializeAws_restXmlTransition = function (output, context) {\n var contents = {\n __type: \"Transition\",\n Date: undefined,\n Days: undefined,\n StorageClass: undefined\n };\n if (output[\"Date\"] !== undefined) {\n contents.Date = new Date(output[\"Date\"]);\n }\n if (output[\"Days\"] !== undefined) {\n contents.Days = parseInt(output[\"Days\"]);\n }\n if (output[\"StorageClass\"] !== undefined) {\n contents.StorageClass = output[\"StorageClass\"];\n }\n return contents;\n};\nvar deserializeAws_restXmlTransitionList = function (output, context) {\n var contents = [];\n (output || []).map(function (entry) {\n contents.push(deserializeAws_restXmlTransition(entry, context));\n });\n return contents;\n};\nvar deserializeMetadata = function (output) { return ({\n httpStatusCode: output.statusCode,\n httpHeaders: output.headers,\n requestId: output.headers[\"x-amzn-requestid\"]\n}); };\n// Collect low-level response body stream to Uint8Array.\nvar collectBody = function (streamBody, context) {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return (context.streamCollector(streamBody) || Promise.resolve(new Uint8Array()));\n};\n// Encode Uint8Array data into string with utf-8.\nvar collectBodyString = function (streamBody, context) {\n return collectBody(streamBody, context).then(function (body) {\n return context.utf8Encoder(body);\n });\n};\nvar decodeEscapedXML = function (str) {\n return str\n .replace(/&/g, \"&\")\n .replace(/'/g, \"'\")\n .replace(/"/g, '\"')\n .replace(/>/g, \">\")\n .replace(/</g, \"<\");\n};\nvar parseBody = function (streamBody, context) {\n return collectBodyString(streamBody, context).then(function (encoded) {\n if (encoded.length) {\n var parsedObj = xmlParse(encoded, {\n attributeNamePrefix: \"\",\n ignoreAttributes: false,\n parseNodeValue: false,\n tagValueProcessor: function (val, tagName) { return decodeEscapedXML(val); }\n });\n var textNodeName = \"#text\";\n var key = Object.keys(parsedObj)[0];\n var parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return parsedObjToReturn;\n }\n return {};\n });\n};\nvar loadRestXmlErrorCode = function (output, data) {\n if (data.Code !== undefined) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n return \"\";\n};\n//# sourceMappingURL=Aws_restXml.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlGetObjectCommand, serializeAws_restXmlGetObjectCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar GetObjectCommand = /** @class */ (function (_super) {\n __extends(GetObjectCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function GetObjectCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n GetObjectCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n GetObjectCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlGetObjectCommand(input, context);\n };\n GetObjectCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlGetObjectCommand(output, context);\n };\n return GetObjectCommand;\n}($Command));\nexport { GetObjectCommand };\n//# sourceMappingURL=GetObjectCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlDeleteObjectCommand, serializeAws_restXmlDeleteObjectCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar DeleteObjectCommand = /** @class */ (function (_super) {\n __extends(DeleteObjectCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function DeleteObjectCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n DeleteObjectCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n DeleteObjectCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlDeleteObjectCommand(input, context);\n };\n DeleteObjectCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlDeleteObjectCommand(output, context);\n };\n return DeleteObjectCommand;\n}($Command));\nexport { DeleteObjectCommand };\n//# sourceMappingURL=DeleteObjectCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlListObjectsCommand, serializeAws_restXmlListObjectsCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar ListObjectsCommand = /** @class */ (function (_super) {\n __extends(ListObjectsCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function ListObjectsCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n ListObjectsCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n ListObjectsCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlListObjectsCommand(input, context);\n };\n ListObjectsCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlListObjectsCommand(output, context);\n };\n return ListObjectsCommand;\n}($Command));\nexport { ListObjectsCommand };\n//# sourceMappingURL=ListObjectsCommand.js.map","import { HeaderMarshaller } from \"./HeaderMarshaller\";\nimport { splitMessage } from \"./splitMessage\";\nimport { Message, MessageHeaders } from \"@aws-sdk/types\";\nimport { Crc32 } from \"@aws-crypto/crc32\";\nimport { Decoder, Encoder } from \"@aws-sdk/types\";\n\n/**\n * A marshaller that can convert binary-packed event stream messages into\n * JavaScript objects and back again into their binary format.\n */\nexport class EventStreamMarshaller {\n private readonly headerMarshaller: HeaderMarshaller;\n\n constructor(toUtf8: Encoder, fromUtf8: Decoder) {\n this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8);\n }\n\n /**\n * Convert a structured JavaScript object with tagged headers into a binary\n * event stream message.\n */\n marshall({ headers: rawHeaders, body }: Message): Uint8Array {\n const headers = this.headerMarshaller.format(rawHeaders);\n const length = headers.byteLength + body.byteLength + 16;\n\n const out = new Uint8Array(length);\n const view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n const checksum = new Crc32();\n\n // Format message\n view.setUint32(0, length, false);\n view.setUint32(4, headers.byteLength, false);\n view.setUint32(8, checksum.update(out.subarray(0, 8)).digest(), false);\n out.set(headers, 12);\n out.set(body, headers.byteLength + 12);\n\n // Write trailing message checksum\n view.setUint32(\n length - 4,\n checksum.update(out.subarray(8, length - 4)).digest(),\n false\n );\n\n return out;\n }\n\n /**\n * Convert a binary event stream message into a JavaScript object with an\n * opaque, binary body and tagged, parsed headers.\n */\n unmarshall(message: ArrayBufferView): Message {\n const { headers, body } = splitMessage(message);\n\n return { headers: this.headerMarshaller.parse(headers), body };\n }\n\n /**\n * Convert a structured JavaScript object with tagged headers into a binary\n * event stream message header.\n */\n formatHeaders(rawHeaders: MessageHeaders): Uint8Array {\n return this.headerMarshaller.format(rawHeaders);\n }\n}\n","import { EventStreamMarshaller as EventMarshaller } from \"@aws-sdk/eventstream-marshaller\";\nimport { Message } from \"@aws-sdk/types\";\n\nexport function getEventMessageStream(\n chunkedStream: ReadableStream,\n eventMarshaller: EventMarshaller\n): ReadableStream<{ [name: string]: Message }> {\n const chunkReader = chunkedStream.getReader();\n const messageStream = new ReadableStream<{ [name: string]: Message }>({\n start(controller) {\n function push() {\n chunkReader.read().then(({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n\n // @ts-ignore: error TS2345: Argument of type 'Uint8Array | undefined'\n // is not assignable to parameter of type 'ArrayBufferView'\n const message = eventMarshaller.unmarshall(value);\n const { value: messageType } = message.headers[\":message-type\"];\n if (messageType === \"error\") {\n // Unmodeled exception in event\n const unmodeledError = new Error(\n (message.headers[\":error-message\"].value as string) ||\n \"UnknownError\"\n );\n unmodeledError.name = message.headers[\":error-code\"]\n .value as string;\n controller.error(unmodeledError);\n } else if (messageType === \"exception\") {\n // throw this.exceptionsDeserializer(message);\n controller.enqueue({\n [message.headers[\":exception-type\"].value as string]: message\n });\n } else if (messageType === \"event\") {\n controller.enqueue({\n [message.headers[\":event-type\"].value as string]: message\n });\n } else {\n controller.error(\n new Error(\n `Unrecognizable event type: ${message.headers[\":event-type\"].value}`\n )\n );\n }\n push();\n });\n }\n\n push();\n }\n });\n\n return messageStream;\n}\n","export function getChunkedStream(\n source: ReadableStream\n): ReadableStream {\n const sourceReader = source.getReader();\n let currentMessageTotalLength = 0;\n let currentMessagePendingLength = 0;\n let currentMessage: Uint8Array | null = null;\n let messageLengthBuffer: Uint8Array | null = null;\n const allocateMessage = function(size: number) {\n if (typeof size !== \"number\") {\n throw new Error(\n \"Attempted to allocate an event message where size was not a number: \" +\n size\n );\n }\n currentMessageTotalLength = size;\n currentMessagePendingLength = 4;\n currentMessage = new Uint8Array(size);\n const currentMessageView = new DataView(currentMessage.buffer);\n currentMessageView.setUint32(0, size, false); //set big-endian Uint32 to 0~3 bytes\n };\n\n const chunkedStream = new ReadableStream({\n start(controller) {\n function push() {\n return sourceReader.read().then(({ done, value }) => {\n if (done) {\n if (currentMessageTotalLength) {\n if (currentMessageTotalLength === currentMessagePendingLength) {\n controller.enqueue(currentMessage);\n } else {\n throw new Error(\"Truncated event message received.\");\n }\n }\n controller.close();\n return;\n }\n\n // @ts-ignore error TS2532: Object is possibly 'undefined' for value\n const chunkLength = value.length;\n let currentOffset = 0;\n\n while (currentOffset < chunkLength) {\n // create new message if necessary\n if (!currentMessage) {\n // working on a new message, determine total length\n const bytesRemaining = chunkLength - currentOffset;\n // prevent edge case where total length spans 2 chunks\n if (!messageLengthBuffer) {\n messageLengthBuffer = new Uint8Array(4);\n }\n const numBytesForTotal = Math.min(\n 4 - currentMessagePendingLength, // remaining bytes to fill the messageLengthBuffer\n bytesRemaining // bytes left in chunk\n );\n\n messageLengthBuffer.set(\n // @ts-ignore error TS2532: Object is possibly 'undefined' for value\n value.slice(currentOffset, currentOffset + numBytesForTotal),\n currentMessagePendingLength\n );\n\n currentMessagePendingLength += numBytesForTotal;\n currentOffset += numBytesForTotal;\n\n if (currentMessagePendingLength < 4) {\n // not enough information to create the current message\n break;\n }\n allocateMessage(\n new DataView(messageLengthBuffer.buffer).getUint32(0, false)\n );\n messageLengthBuffer = null;\n }\n\n // write data into current message\n const numBytesToWrite = Math.min(\n currentMessageTotalLength - currentMessagePendingLength, // number of bytes left to complete message\n chunkLength - currentOffset // number of bytes left in the original chunk\n );\n currentMessage!.set(\n // @ts-ignore error TS2532: Object is possibly 'undefined' for value\n value.slice(currentOffset, currentOffset + numBytesToWrite),\n currentMessagePendingLength\n );\n currentMessagePendingLength += numBytesToWrite;\n currentOffset += numBytesToWrite;\n\n // check if a message is ready to be pushed\n if (\n currentMessageTotalLength &&\n currentMessageTotalLength === currentMessagePendingLength\n ) {\n // push out the message\n controller.enqueue(currentMessage);\n // cleanup\n currentMessage = null;\n currentMessageTotalLength = 0;\n currentMessagePendingLength = 0;\n }\n }\n push();\n });\n }\n\n push();\n }\n });\n\n return chunkedStream;\n}\n","import { Message } from \"@aws-sdk/types\";\n\nexport function getDeserializingStream(\n messageStream: ReadableStream<{ [name: string]: Message }>,\n deserializer: (input: any) => any\n): ReadableStream<{ [name: string]: any }> {\n const messageReader = messageStream.getReader();\n const deserializedStream = new ReadableStream<{ [name: string]: any }>({\n start(controller) {\n function push() {\n messageReader.read().then(async ({ done, value }) => {\n if (done) {\n controller.close();\n return;\n }\n\n try {\n controller.enqueue(await deserializer(value));\n push();\n } catch (e) {\n controller.error(e);\n }\n });\n }\n\n push();\n }\n });\n return deserializedStream;\n}\n","/**\n * Convert ReadableStream into an async iterable.\n */\nexport async function* ReadableStreamtoIterable(\n readableStream: ReadableStream\n): AsyncIterable {\n const reader = readableStream.getReader();\n let done = false;\n while (!done) {\n const { done: end, value } = await reader.read();\n if (end) {\n done = true;\n break;\n }\n if (value) {\n yield value;\n }\n }\n}\n","// Partition default templates\nvar AWS_TEMPLATE = \"cognito-identity.{region}.amazonaws.com\";\nvar AWS_CN_TEMPLATE = \"cognito-identity.{region}.amazonaws.com.cn\";\nvar AWS_ISO_TEMPLATE = \"cognito-identity.{region}.c2s.ic.gov\";\nvar AWS_ISO_B_TEMPLATE = \"cognito-identity.{region}.sc2s.sgov.gov\";\nvar AWS_US_GOV_TEMPLATE = \"cognito-identity.{region}.amazonaws.com\";\n// Partition regions\nvar AWS_REGIONS = new Set([\n \"ap-south-1\",\n \"eu-north-1\",\n \"eu-west-3\",\n \"eu-west-2\",\n \"eu-west-1\",\n \"ap-northeast-2\",\n \"ap-northeast-1\",\n \"me-south-1\",\n \"ca-central-1\",\n \"sa-east-1\",\n \"ap-east-1\",\n \"ap-southeast-1\",\n \"ap-southeast-2\",\n \"eu-central-1\",\n \"us-east-1\",\n \"us-east-2\",\n \"us-west-1\",\n \"us-west-2\"\n]);\nvar AWS_CN_REGIONS = new Set([\"cn-north-1\", \"cn-northwest-1\"]);\nvar AWS_ISO_REGIONS = new Set([\"us-iso-east-1\"]);\nvar AWS_ISO_B_REGIONS = new Set([\"us-isob-east-1\"]);\nvar AWS_US_GOV_REGIONS = new Set([\"us-gov-west-1\", \"us-gov-east-1\"]);\nexport var defaultRegionInfoProvider = function (region, options) {\n var regionInfo = undefined;\n switch (region) {\n // First, try to match exact region names.\n case \"ap-northeast-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-northeast-1.amazonaws.com\"\n };\n break;\n case \"ap-northeast-2\":\n regionInfo = {\n hostname: \"cognito-identity.ap-northeast-2.amazonaws.com\"\n };\n break;\n case \"ap-south-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-south-1.amazonaws.com\"\n };\n break;\n case \"ap-southeast-1\":\n regionInfo = {\n hostname: \"cognito-identity.ap-southeast-1.amazonaws.com\"\n };\n break;\n case \"ap-southeast-2\":\n regionInfo = {\n hostname: \"cognito-identity.ap-southeast-2.amazonaws.com\"\n };\n break;\n case \"ca-central-1\":\n regionInfo = {\n hostname: \"cognito-identity.ca-central-1.amazonaws.com\"\n };\n break;\n case \"cn-north-1\":\n regionInfo = {\n hostname: \"cognito-identity.cn-north-1.amazonaws.com.cn\"\n };\n break;\n case \"eu-central-1\":\n regionInfo = {\n hostname: \"cognito-identity.eu-central-1.amazonaws.com\"\n };\n break;\n case \"eu-west-1\":\n regionInfo = {\n hostname: \"cognito-identity.eu-west-1.amazonaws.com\"\n };\n break;\n case \"eu-west-2\":\n regionInfo = {\n hostname: \"cognito-identity.eu-west-2.amazonaws.com\"\n };\n break;\n case \"us-east-1\":\n regionInfo = {\n hostname: \"cognito-identity.us-east-1.amazonaws.com\"\n };\n break;\n case \"us-east-2\":\n regionInfo = {\n hostname: \"cognito-identity.us-east-2.amazonaws.com\"\n };\n break;\n case \"us-west-2\":\n regionInfo = {\n hostname: \"cognito-identity.us-west-2.amazonaws.com\"\n };\n break;\n // Next, try to match partition endpoints.\n default:\n if (AWS_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region)\n };\n }\n if (AWS_CN_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_CN_TEMPLATE.replace(\"{region}\", region)\n };\n }\n if (AWS_ISO_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_TEMPLATE.replace(\"{region}\", region)\n };\n }\n if (AWS_ISO_B_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_ISO_B_TEMPLATE.replace(\"{region}\", region)\n };\n }\n if (AWS_US_GOV_REGIONS.has(region)) {\n regionInfo = {\n hostname: AWS_US_GOV_TEMPLATE.replace(\"{region}\", region)\n };\n }\n // Finally, assume it's an AWS partition endpoint.\n if (regionInfo === undefined) {\n regionInfo = {\n hostname: AWS_TEMPLATE.replace(\"{region}\", region)\n };\n }\n }\n return Promise.resolve(regionInfo);\n};\n//# sourceMappingURL=endpoints.js.map","import { defaultRegionInfoProvider } from \"./endpoints\";\nexport var ClientSharedValues = {\n apiVersion: \"2014-06-30\",\n disableHostPrefix: false,\n signingName: \"cognito-identity\",\n regionInfoProvider: defaultRegionInfoProvider\n};\n//# sourceMappingURL=runtimeConfig.shared.js.map","import { __assign } from \"tslib\";\nimport { invalidFunction } from \"@aws-sdk/invalid-dependency\";\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { FetchHttpHandler } from \"@aws-sdk/fetch-http-handler\";\nimport { parseUrl } from \"@aws-sdk/url-parser-browser\";\nimport { calculateBodyLength } from \"@aws-sdk/util-body-length-browser\";\nimport { streamCollector } from \"@aws-sdk/stream-collector-browser\";\nimport { fromUtf8, toUtf8 } from \"@aws-sdk/util-utf8-browser\";\nimport { fromBase64, toBase64 } from \"@aws-sdk/util-base64-browser\";\nimport { defaultUserAgent } from \"@aws-sdk/util-user-agent-browser\";\nimport { name, version } from \"./package.json\";\nimport { ClientSharedValues } from \"./runtimeConfig.shared\";\nexport var ClientDefaultValues = __assign(__assign({}, ClientSharedValues), { requestHandler: new FetchHttpHandler(), sha256: Sha256, urlParser: parseUrl, bodyLengthChecker: calculateBodyLength, streamCollector: streamCollector, base64Decoder: fromBase64, base64Encoder: toBase64, utf8Decoder: fromUtf8, utf8Encoder: toUtf8, defaultUserAgent: defaultUserAgent(name, version), runtime: \"browser\", credentialDefaultProvider: (function () { }), regionDefaultProvider: invalidFunction(\"Region is missing\") });\n//# sourceMappingURL=runtimeConfig.browser.js.map","import {\n Encoder,\n Decoder,\n EventSigner,\n EventStreamSerdeProvider,\n Provider\n} from \"@aws-sdk/types\";\nimport { EventStreamMarshaller } from \"./EventStreamMarshaller\";\n\n/** browser event stream serde utils provider */\nexport const eventStreamSerdeProvider: EventStreamSerdeProvider = (options: {\n utf8Encoder: Encoder;\n utf8Decoder: Decoder;\n eventSigner: EventSigner | Provider;\n}) => new EventStreamMarshaller(options);\n","import { __assign, __extends } from \"tslib\";\nimport { ClientDefaultValues as __ClientDefaultValues } from \"./runtimeConfig\";\nimport { resolveEndpointsConfig, resolveRegionConfig } from \"@aws-sdk/config-resolver\";\nimport { resolveEventStreamSerdeConfig } from \"@aws-sdk/eventstream-serde-config-resolver\";\nimport { resolveBucketEndpointConfig } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getContentLengthPlugin } from \"@aws-sdk/middleware-content-length\";\nimport { getAddExpectContinuePlugin } from \"@aws-sdk/middleware-expect-continue\";\nimport { getHostHeaderPlugin, resolveHostHeaderConfig } from \"@aws-sdk/middleware-host-header\";\nimport { getRetryPlugin, resolveRetryConfig } from \"@aws-sdk/middleware-retry\";\nimport { getValidateBucketNamePlugin } from \"@aws-sdk/middleware-sdk-s3\";\nimport { getAwsAuthPlugin, resolveAwsAuthConfig } from \"@aws-sdk/middleware-signing\";\nimport { getUserAgentPlugin, resolveUserAgentConfig } from \"@aws-sdk/middleware-user-agent\";\nimport { Client as __Client } from \"@aws-sdk/smithy-client\";\n/**\n *

\n */\nvar S3Client = /** @class */ (function (_super) {\n __extends(S3Client, _super);\n function S3Client(configuration) {\n var _this = this;\n var _config_0 = __assign(__assign({}, __ClientDefaultValues), configuration);\n var _config_1 = resolveRegionConfig(_config_0);\n var _config_2 = resolveEndpointsConfig(_config_1);\n var _config_3 = resolveAwsAuthConfig(_config_2);\n var _config_4 = resolveRetryConfig(_config_3);\n var _config_5 = resolveUserAgentConfig(_config_4);\n var _config_6 = resolveBucketEndpointConfig(_config_5);\n var _config_7 = resolveHostHeaderConfig(_config_6);\n var _config_8 = resolveEventStreamSerdeConfig(_config_7);\n _this = _super.call(this, _config_8) || this;\n _this.config = _config_8;\n _this.middlewareStack.use(getAwsAuthPlugin(_this.config));\n _this.middlewareStack.use(getRetryPlugin(_this.config));\n _this.middlewareStack.use(getUserAgentPlugin(_this.config));\n _this.middlewareStack.use(getContentLengthPlugin(_this.config));\n _this.middlewareStack.use(getValidateBucketNamePlugin(_this.config));\n _this.middlewareStack.use(getAddExpectContinuePlugin(_this.config));\n _this.middlewareStack.use(getHostHeaderPlugin(_this.config));\n return _this;\n }\n S3Client.prototype.destroy = function () { };\n return S3Client;\n}(__Client));\nexport { S3Client };\n//# sourceMappingURL=S3Client.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { HttpResponse } from '@aws-sdk/protocol-http';\nimport { buildQueryString } from '@aws-sdk/querystring-builder';\nimport axios from 'axios';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('axios-http-handler');\nexport var SEND_PROGRESS_EVENT = 'sendProgress';\nvar AxiosHttpHandler = /** @class */ (function () {\n function AxiosHttpHandler(httpOptions, emitter) {\n if (httpOptions === void 0) { httpOptions = {}; }\n this.httpOptions = httpOptions;\n this.emitter = emitter;\n }\n AxiosHttpHandler.prototype.destroy = function () {\n // Do nothing. TLS and HTTP/2 connection pooling is handled by the\n // browser.\n };\n AxiosHttpHandler.prototype.handle = function (request, options) {\n var requestTimeoutInMs = this.httpOptions.requestTimeout;\n var emitter = this.emitter;\n var path = request.path;\n if (request.query) {\n var queryString = buildQueryString(request.query);\n if (queryString) {\n path += \"?\" + queryString;\n }\n }\n var port = request.port;\n var url = request.protocol + \"//\" + request.hostname + (port ? \":\" + port : '') + path;\n var axiosRequest = {};\n axiosRequest.url = url;\n axiosRequest.method = request.method;\n axiosRequest.headers = request.headers;\n // The host header is automatically added by the browser and adding it explicitly in the\n // axios request throws an error https://github.com/aws-amplify/amplify-js/issues/5376\n // This is because the host header is a forbidden header for the http client to set\n // see https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name and\n // https://fetch.spec.whatwg.org/#forbidden-header-name\n // The reason we are removing this header here instead of in the aws-sdk's client\n // middleware is that the host header is required to be in the request signature and if\n // we remove it from the middlewares, then the request fails because the header is added\n // by the browser but is absent from the signature.\n delete axiosRequest.headers['host'];\n if (request.body) {\n axiosRequest.data = request.body;\n }\n else {\n // Fix for https://github.com/aws-amplify/amplify-js/issues/5432\n // If the POST request body is empty but content-type header is set, axios is forcibly removing it\n // See https://github.com/axios/axios/issues/1535 and refusing to fix it https://github.com/axios/axios/issues/755\n // This change is a workaround to set the data as null (instead of undefined) to prevent axios from\n // removing the content-type header. Link for the source code\n // https://github.com/axios/axios/blob/dc4bc49673943e35280e5df831f5c3d0347a9393/lib/adapters/xhr.js#L121-L123\n if (axiosRequest.headers['Content-Type']) {\n axiosRequest.data = null;\n }\n }\n if (emitter) {\n axiosRequest.onUploadProgress = function (event) {\n emitter.emit(SEND_PROGRESS_EVENT, event);\n logger.debug(event);\n };\n }\n if (this.httpOptions.bufferBody) {\n axiosRequest.responseType = 'blob';\n }\n var raceOfPromises = [\n axios\n .request(axiosRequest)\n .then(function (response) {\n return {\n response: new HttpResponse({\n headers: response.headers,\n statusCode: response.status,\n body: response.data,\n }),\n };\n })\n .catch(function (error) {\n // Error\n logger.error(error);\n throw error;\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n return Promise.race(raceOfPromises);\n };\n return AxiosHttpHandler;\n}());\nexport { AxiosHttpHandler };\nfunction requestTimeout(timeoutInMs) {\n if (timeoutInMs === void 0) { timeoutInMs = 0; }\n return new Promise(function (resolve, reject) {\n if (timeoutInMs) {\n setTimeout(function () {\n var timeoutError = new Error(\"Request did not complete within \" + timeoutInMs + \" ms\");\n timeoutError.name = 'TimeoutError';\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n//# sourceMappingURL=axios-http-handler.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlPutObjectCommand, serializeAws_restXmlPutObjectCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar PutObjectCommand = /** @class */ (function (_super) {\n __extends(PutObjectCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function PutObjectCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n PutObjectCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n PutObjectCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlPutObjectCommand(input, context);\n };\n PutObjectCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlPutObjectCommand(output, context);\n };\n return PutObjectCommand;\n}($Command));\nexport { PutObjectCommand };\n//# sourceMappingURL=PutObjectCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlCreateMultipartUploadCommand, serializeAws_restXmlCreateMultipartUploadCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar CreateMultipartUploadCommand = /** @class */ (function (_super) {\n __extends(CreateMultipartUploadCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function CreateMultipartUploadCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n CreateMultipartUploadCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n CreateMultipartUploadCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlCreateMultipartUploadCommand(input, context);\n };\n CreateMultipartUploadCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlCreateMultipartUploadCommand(output, context);\n };\n return CreateMultipartUploadCommand;\n}($Command));\nexport { CreateMultipartUploadCommand };\n//# sourceMappingURL=CreateMultipartUploadCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlUploadPartCommand, serializeAws_restXmlUploadPartCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { getSsecPlugin } from \"@aws-sdk/middleware-ssec\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar UploadPartCommand = /** @class */ (function (_super) {\n __extends(UploadPartCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function UploadPartCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n UploadPartCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getSsecPlugin(configuration));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n UploadPartCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlUploadPartCommand(input, context);\n };\n UploadPartCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlUploadPartCommand(output, context);\n };\n return UploadPartCommand;\n}($Command));\nexport { UploadPartCommand };\n//# sourceMappingURL=UploadPartCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlCompleteMultipartUploadCommand, serializeAws_restXmlCompleteMultipartUploadCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar CompleteMultipartUploadCommand = /** @class */ (function (_super) {\n __extends(CompleteMultipartUploadCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function CompleteMultipartUploadCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n CompleteMultipartUploadCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n CompleteMultipartUploadCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlCompleteMultipartUploadCommand(input, context);\n };\n CompleteMultipartUploadCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlCompleteMultipartUploadCommand(output, context);\n };\n return CompleteMultipartUploadCommand;\n}($Command));\nexport { CompleteMultipartUploadCommand };\n//# sourceMappingURL=CompleteMultipartUploadCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlAbortMultipartUploadCommand, serializeAws_restXmlAbortMultipartUploadCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar AbortMultipartUploadCommand = /** @class */ (function (_super) {\n __extends(AbortMultipartUploadCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function AbortMultipartUploadCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n AbortMultipartUploadCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n AbortMultipartUploadCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlAbortMultipartUploadCommand(input, context);\n };\n AbortMultipartUploadCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlAbortMultipartUploadCommand(output, context);\n };\n return AbortMultipartUploadCommand;\n}($Command));\nexport { AbortMultipartUploadCommand };\n//# sourceMappingURL=AbortMultipartUploadCommand.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_restXmlListPartsCommand, serializeAws_restXmlListPartsCommand } from \"../protocols/Aws_restXml\";\nimport { getBucketEndpointPlugin } from \"@aws-sdk/middleware-bucket-endpoint\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar ListPartsCommand = /** @class */ (function (_super) {\n __extends(ListPartsCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function ListPartsCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n ListPartsCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use(getBucketEndpointPlugin(configuration));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n ListPartsCommand.prototype.serialize = function (input, context) {\n return serializeAws_restXmlListPartsCommand(input, context);\n };\n ListPartsCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_restXmlListPartsCommand(output, context);\n };\n return ListPartsCommand;\n}($Command));\nexport { ListPartsCommand };\n//# sourceMappingURL=ListPartsCommand.js.map","export var httpHandlerOptions = {\n bufferBody: false,\n};\n//# sourceMappingURL=httpHandlerOptions.js.map","/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { ConsoleLogger as Logger, getAmplifyUserAgent, } from '@aws-amplify/core';\nimport { S3Client, PutObjectCommand, CreateMultipartUploadCommand, UploadPartCommand, CompleteMultipartUploadCommand, ListPartsCommand, AbortMultipartUploadCommand, } from '@aws-sdk/client-s3';\nimport { AxiosHttpHandler, SEND_PROGRESS_EVENT } from './axios-http-handler';\nimport * as events from 'events';\nimport { parseUrl } from '@aws-sdk/url-parser-node';\nimport { httpHandlerOptions } from './httpHandlerOptions';\nimport { streamCollector } from '@aws-sdk/stream-collector-native';\nvar logger = new Logger('AWSS3ProviderManagedUpload');\nvar localTestingStorageEndpoint = 'http://localhost:20005';\nvar SET_CONTENT_LENGTH_HEADER = 'contentLengthMiddleware';\nvar AWSS3ProviderManagedUpload = /** @class */ (function () {\n function AWSS3ProviderManagedUpload(params, opts, emitter) {\n // Defaults\n this.minPartSize = 5 * 1024 * 1024; // in MB\n this.queueSize = 4;\n // Data for current upload\n this.body = null;\n this.params = null;\n this.opts = null;\n this.multiPartMap = [];\n this.cancel = false;\n // Progress reporting\n this.bytesUploaded = 0;\n this.totalBytesToUpload = 0;\n this.emitter = null;\n this.params = params;\n this.opts = opts;\n this.emitter = emitter;\n }\n AWSS3ProviderManagedUpload.prototype.upload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, putObjectCommand, s3, uploadId, numberOfPartsToUpload, start, parts;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = this;\n return [4 /*yield*/, this.validateAndSanitizeBody(this.params.Body)];\n case 1:\n _a.body = _b.sent();\n this.totalBytesToUpload = this.byteLength(this.body);\n if (!(this.totalBytesToUpload <= this.minPartSize)) return [3 /*break*/, 2];\n // Multipart upload is not required. Upload the sanitized body as is\n this.params.Body = this.body;\n putObjectCommand = new PutObjectCommand(this.params);\n s3 = this._createNewS3Client(this.opts, this.emitter);\n return [2 /*return*/, s3.send(putObjectCommand)];\n case 2: return [4 /*yield*/, this.createMultiPartUpload()];\n case 3:\n uploadId = _b.sent();\n numberOfPartsToUpload = Math.ceil(this.totalBytesToUpload / this.minPartSize);\n start = 0;\n _b.label = 4;\n case 4:\n if (!(start < numberOfPartsToUpload)) return [3 /*break*/, 9];\n /** This first block will try to cancel the upload if the cancel\n *\trequest came before any parts uploads have started.\n **/\n return [4 /*yield*/, this.checkIfUploadCancelled(uploadId)];\n case 5:\n /** This first block will try to cancel the upload if the cancel\n *\trequest came before any parts uploads have started.\n **/\n _b.sent();\n parts = this.createParts(start);\n return [4 /*yield*/, this.uploadParts(uploadId, parts)];\n case 6:\n _b.sent();\n /** Call cleanup a second time in case there were part upload requests\n * in flight. This is to ensure that all parts are cleaned up.\n */\n return [4 /*yield*/, this.checkIfUploadCancelled(uploadId)];\n case 7:\n /** Call cleanup a second time in case there were part upload requests\n * in flight. This is to ensure that all parts are cleaned up.\n */\n _b.sent();\n _b.label = 8;\n case 8:\n start += this.queueSize;\n return [3 /*break*/, 4];\n case 9: return [4 /*yield*/, this.finishMultiPartUpload(uploadId)];\n case 10: \n // Step 3: Finalize the upload such that S3 can recreate the file\n return [2 /*return*/, _b.sent()];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.createParts = function (startPartNumber) {\n var parts = [];\n var partNumber = startPartNumber;\n for (var bodyStart = startPartNumber * this.minPartSize; bodyStart < this.totalBytesToUpload && parts.length < this.queueSize;) {\n var bodyEnd = Math.min(bodyStart + this.minPartSize, this.totalBytesToUpload);\n parts.push({\n bodyPart: this.body.slice(bodyStart, bodyEnd),\n partNumber: ++partNumber,\n emitter: new events.EventEmitter(),\n _lastUploadedBytes: 0,\n });\n bodyStart += this.minPartSize;\n }\n return parts;\n };\n AWSS3ProviderManagedUpload.prototype.createMultiPartUpload = function () {\n return __awaiter(this, void 0, void 0, function () {\n var createMultiPartUploadCommand, s3, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n createMultiPartUploadCommand = new CreateMultipartUploadCommand(this.params);\n s3 = this._createNewS3Client(this.opts);\n return [4 /*yield*/, s3.send(createMultiPartUploadCommand)];\n case 1:\n response = _a.sent();\n logger.debug(response.UploadId);\n return [2 /*return*/, response.UploadId];\n }\n });\n });\n };\n /**\n * @private Not to be extended outside of tests\n * @VisibleFotTesting\n */\n AWSS3ProviderManagedUpload.prototype.uploadParts = function (uploadId, parts) {\n return __awaiter(this, void 0, void 0, function () {\n var promises, parts_1, parts_1_1, part, uploadPartCommandInput, uploadPartCommand, s3, allResults, i, error_1;\n var e_1, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n promises = [];\n try {\n for (parts_1 = __values(parts), parts_1_1 = parts_1.next(); !parts_1_1.done; parts_1_1 = parts_1.next()) {\n part = parts_1_1.value;\n this.setupEventListener(part);\n uploadPartCommandInput = {\n PartNumber: part.partNumber,\n Body: part.bodyPart,\n UploadId: uploadId,\n Key: this.params.Key,\n Bucket: this.params.Bucket,\n };\n uploadPartCommand = new UploadPartCommand(uploadPartCommandInput);\n s3 = this._createNewS3Client(this.opts, part.emitter);\n promises.push(s3.send(uploadPartCommand));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (parts_1_1 && !parts_1_1.done && (_a = parts_1.return)) _a.call(parts_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.all(promises)];\n case 2:\n allResults = _b.sent();\n // The order of resolved promises is the same as input promise order.\n for (i = 0; i < allResults.length; i++) {\n this.multiPartMap.push({\n PartNumber: parts[i].partNumber,\n ETag: allResults[i].ETag,\n });\n }\n return [3 /*break*/, 4];\n case 3:\n error_1 = _b.sent();\n logger.error('error happened while uploading a part. Cancelling the multipart upload', error_1);\n this.cancelUpload();\n return [2 /*return*/];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.finishMultiPartUpload = function (uploadId) {\n return __awaiter(this, void 0, void 0, function () {\n var input, completeUploadCommand, s3, data, error_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n input = {\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: uploadId,\n MultipartUpload: { Parts: this.multiPartMap },\n };\n completeUploadCommand = new CompleteMultipartUploadCommand(input);\n s3 = this._createNewS3Client(this.opts);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, s3.send(completeUploadCommand)];\n case 2:\n data = _a.sent();\n return [2 /*return*/, data.Key];\n case 3:\n error_2 = _a.sent();\n logger.error('error happened while finishing the upload. Cancelling the multipart upload', error_2);\n this.cancelUpload();\n return [2 /*return*/];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.checkIfUploadCancelled = function (uploadId) {\n return __awaiter(this, void 0, void 0, function () {\n var errorMessage, error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.cancel) return [3 /*break*/, 5];\n errorMessage = 'Upload was cancelled.';\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.cleanup(uploadId)];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n error_3 = _a.sent();\n errorMessage += error_3.errorMessage;\n return [3 /*break*/, 4];\n case 4: throw new Error(errorMessage);\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.cancelUpload = function () {\n this.cancel = true;\n };\n AWSS3ProviderManagedUpload.prototype.cleanup = function (uploadId) {\n return __awaiter(this, void 0, void 0, function () {\n var input, s3, data;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n // Reset this's state\n this.body = null;\n this.multiPartMap = [];\n this.bytesUploaded = 0;\n this.totalBytesToUpload = 0;\n input = {\n Bucket: this.params.Bucket,\n Key: this.params.Key,\n UploadId: uploadId,\n };\n s3 = this._createNewS3Client(this.opts);\n return [4 /*yield*/, s3.send(new AbortMultipartUploadCommand(input))];\n case 1:\n _a.sent();\n return [4 /*yield*/, s3.send(new ListPartsCommand(input))];\n case 2:\n data = _a.sent();\n if (data && data.Parts && data.Parts.length > 0) {\n throw new Error('Multi Part upload clean up failed');\n }\n return [2 /*return*/];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.setupEventListener = function (part) {\n var _this = this;\n part.emitter.on(SEND_PROGRESS_EVENT, function (progress) {\n _this.progressChanged(part.partNumber, progress.loaded - part._lastUploadedBytes);\n part._lastUploadedBytes = progress.loaded;\n });\n };\n AWSS3ProviderManagedUpload.prototype.progressChanged = function (partNumber, incrementalUpdate) {\n this.bytesUploaded += incrementalUpdate;\n this.emitter.emit(SEND_PROGRESS_EVENT, {\n loaded: this.bytesUploaded,\n total: this.totalBytesToUpload,\n part: partNumber,\n key: this.params.Key,\n });\n };\n AWSS3ProviderManagedUpload.prototype.byteLength = function (input) {\n if (input === null || input === undefined)\n return 0;\n if (typeof input.byteLength === 'number') {\n return input.byteLength;\n }\n else if (typeof input.length === 'number') {\n return input.length;\n }\n else if (typeof input.size === 'number') {\n return input.size;\n }\n else if (typeof input.path === 'string') {\n /* NodeJs Support\n return require('fs').lstatSync(input.path).size;\n */\n }\n else {\n throw new Error('Cannot determine length of ' + input);\n }\n };\n AWSS3ProviderManagedUpload.prototype.validateAndSanitizeBody = function (body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.isGenericObject(body)) return [3 /*break*/, 1];\n // Any javascript object\n return [2 /*return*/, JSON.stringify(body)];\n case 1:\n if (!this.isBlob(body)) return [3 /*break*/, 4];\n if (!httpHandlerOptions.bufferBody) return [3 /*break*/, 3];\n return [4 /*yield*/, streamCollector(body)];\n case 2: return [2 /*return*/, _a.sent()];\n case 3: return [2 /*return*/, body];\n case 4: \n // Files, arrayBuffer etc\n return [2 /*return*/, body];\n }\n });\n });\n };\n AWSS3ProviderManagedUpload.prototype.isBlob = function (body) {\n return typeof Blob !== 'undefined' && body instanceof Blob;\n };\n AWSS3ProviderManagedUpload.prototype.isGenericObject = function (body) {\n if (body !== null && typeof body === 'object') {\n try {\n return !(this.byteLength(body) >= 0);\n }\n catch (error) {\n // If we cannot determine the length of the body, consider it\n // as a generic object and upload a stringified version of it\n return true;\n }\n }\n return false;\n };\n /**\n * @private\n * creates an S3 client with new V3 aws sdk\n */\n AWSS3ProviderManagedUpload.prototype._createNewS3Client = function (config, emitter) {\n var region = config.region, credentials = config.credentials, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting;\n var localTestingConfig = {};\n if (dangerouslyConnectToHttpEndpointForTesting) {\n localTestingConfig = {\n endpoint: localTestingStorageEndpoint,\n s3BucketEndpoint: true,\n s3ForcePathStyle: true,\n };\n }\n var client = new S3Client(__assign(__assign({ region: region,\n credentials: credentials }, localTestingConfig), { requestHandler: new AxiosHttpHandler(httpHandlerOptions, emitter), customUserAgent: getAmplifyUserAgent(), urlParser: parseUrl }));\n client.middlewareStack.remove(SET_CONTENT_LENGTH_HEADER);\n return client;\n };\n return AWSS3ProviderManagedUpload;\n}());\nexport { AWSS3ProviderManagedUpload };\n//# sourceMappingURL=AWSS3ProviderManagedUpload.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger, Hub, Credentials, Parser, getAmplifyUserAgent, } from '@aws-amplify/core';\nimport { S3Client, GetObjectCommand, DeleteObjectCommand, ListObjectsCommand, } from '@aws-sdk/client-s3';\nimport { formatUrl } from '@aws-sdk/util-format-url';\nimport { createRequest } from '@aws-sdk/util-create-request';\nimport { S3RequestPresigner } from '@aws-sdk/s3-request-presigner';\nimport { AxiosHttpHandler } from './axios-http-handler';\nimport { AWSS3ProviderManagedUpload } from './AWSS3ProviderManagedUpload';\nimport { httpHandlerOptions } from './httpHandlerOptions';\nimport * as events from 'events';\nvar logger = new Logger('AWSS3Provider');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchStorageEvent = function (track, event, attrs, metrics, message) {\n if (track) {\n Hub.dispatch('storage', {\n event: event,\n data: { attrs: attrs, metrics: metrics },\n message: message,\n }, 'Storage', AMPLIFY_SYMBOL);\n }\n};\nvar localTestingStorageEndpoint = 'http://localhost:20005';\n/**\n * Provide storage methods to use AWS S3\n */\nvar AWSS3Provider = /** @class */ (function () {\n /**\n * Initialize Storage with AWS configurations\n * @param {Object} config - Configuration object for storage\n */\n function AWSS3Provider(config) {\n this._config = config ? config : {};\n logger.debug('Storage Options', this._config);\n }\n /**\n * get the category of the plugin\n */\n AWSS3Provider.prototype.getCategory = function () {\n return AWSS3Provider.CATEGORY;\n };\n /**\n * get provider name of the plugin\n */\n AWSS3Provider.prototype.getProviderName = function () {\n return AWSS3Provider.PROVIDER_NAME;\n };\n /**\n * Configure Storage part with aws configuration\n * @param {Object} config - Configuration of the Storage\n * @return {Object} - Current configuration\n */\n AWSS3Provider.prototype.configure = function (config) {\n logger.debug('configure Storage', config);\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n this._config = Object.assign({}, this._config, amplifyConfig.Storage);\n if (!this._config.bucket) {\n logger.debug('Do not have bucket yet');\n }\n return this._config;\n };\n /**\n * Get a presigned URL of the file or the object data when download:true\n *\n * @param {string} key - key of the object\n * @param {Object} [config] - { level : private|protected|public, download: true|false }\n * @return - A promise resolves to Amazon S3 presigned URL on success\n */\n AWSS3Provider.prototype.get = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, download, cacheControl, contentDisposition, contentEncoding, contentLanguage, contentType, expires, track, prefix, final_key, s3, params, getObjectCommand, response, error_1, signer, request, url, _a, error_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _b.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, download = opt.download, cacheControl = opt.cacheControl, contentDisposition = opt.contentDisposition, contentEncoding = opt.contentEncoding, contentLanguage = opt.contentLanguage, contentType = opt.contentType, expires = opt.expires, track = opt.track;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createNewS3Client(opt);\n logger.debug('get ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n // See: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#getObject-property\n if (cacheControl)\n params.ResponseCacheControl = cacheControl;\n if (contentDisposition)\n params.ResponseContentDisposition = contentDisposition;\n if (contentEncoding)\n params.ResponseContentEncoding = contentEncoding;\n if (contentLanguage)\n params.ResponseContentLanguage = contentLanguage;\n if (contentType)\n params.ResponseContentType = contentType;\n if (!(download === true)) return [3 /*break*/, 5];\n getObjectCommand = new GetObjectCommand(params);\n _b.label = 2;\n case 2:\n _b.trys.push([2, 4, , 5]);\n return [4 /*yield*/, s3.send(getObjectCommand)];\n case 3:\n response = _b.sent();\n dispatchStorageEvent(track, 'download', { method: 'get', result: 'success' }, { fileSize: Number(response.Body['length']) }, \"Download success for \" + key);\n return [2 /*return*/, response];\n case 4:\n error_1 = _b.sent();\n dispatchStorageEvent(track, 'download', {\n method: 'get',\n result: 'failed',\n }, null, \"Download failed with \" + error_1.message);\n throw error_1;\n case 5:\n params.Expires = expires || 900; // Default is 15 mins as defined in V2 AWS SDK\n params.Expires = new Date(Date.now() + params.Expires * 1000); // expires is in secs\n _b.label = 6;\n case 6:\n _b.trys.push([6, 9, , 10]);\n signer = new S3RequestPresigner(__assign({}, s3.config));\n return [4 /*yield*/, createRequest(s3, new GetObjectCommand(params))];\n case 7:\n request = _b.sent();\n _a = formatUrl;\n return [4 /*yield*/, signer.presign(request, params.Expires)];\n case 8:\n url = _a.apply(void 0, [(_b.sent())]);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'success' }, null, \"Signed URL: \" + url);\n return [2 /*return*/, url];\n case 9:\n error_2 = _b.sent();\n logger.warn('get signed url error', error_2);\n dispatchStorageEvent(track, 'getSignedUrl', { method: 'get', result: 'failed' }, null, \"Could not get a signed URL for \" + key);\n throw error_2;\n case 10: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Put a file in S3 bucket specified to configure method\n * @param {string} key - key of the object\n * @param {Object} object - File to be put in Amazon S3 bucket\n * @param {Object} [config] - { level : private|protected|public, contentType: MIME Types,\n * progressCallback: function }\n * @return - promise resolves to object on success\n */\n AWSS3Provider.prototype.put = function (key, object, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, progressCallback, contentType, contentDisposition, cacheControl, expires, metadata, tagging, serverSideEncryption, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, SSEKMSKeyId, type, prefix, final_key, params, emitter, uploader, response, error_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track, progressCallback = opt.progressCallback;\n contentType = opt.contentType, contentDisposition = opt.contentDisposition, cacheControl = opt.cacheControl, expires = opt.expires, metadata = opt.metadata, tagging = opt.tagging;\n serverSideEncryption = opt.serverSideEncryption, SSECustomerAlgorithm = opt.SSECustomerAlgorithm, SSECustomerKey = opt.SSECustomerKey, SSECustomerKeyMD5 = opt.SSECustomerKeyMD5, SSEKMSKeyId = opt.SSEKMSKeyId;\n type = contentType ? contentType : 'binary/octet-stream';\n prefix = this._prefix(opt);\n final_key = prefix + key;\n logger.debug('put ' + key + ' to ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n Body: object,\n ContentType: type,\n };\n if (cacheControl) {\n params.CacheControl = cacheControl;\n }\n if (contentDisposition) {\n params.ContentDisposition = contentDisposition;\n }\n if (expires) {\n params.Expires = expires;\n }\n if (metadata) {\n params.Metadata = metadata;\n }\n if (tagging) {\n params.Tagging = tagging;\n }\n if (serverSideEncryption) {\n params.ServerSideEncryption = serverSideEncryption;\n if (SSECustomerAlgorithm) {\n params.SSECustomerAlgorithm = SSECustomerAlgorithm;\n }\n if (SSECustomerKey) {\n params.SSECustomerKey = SSECustomerKey;\n }\n if (SSECustomerKeyMD5) {\n params.SSECustomerKeyMD5 = SSECustomerKeyMD5;\n }\n if (SSEKMSKeyId) {\n params.SSEKMSKeyId = SSEKMSKeyId;\n }\n }\n emitter = new events.EventEmitter();\n uploader = new AWSS3ProviderManagedUpload(params, opt, emitter);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n emitter.on('sendProgress', function (progress) {\n if (progressCallback) {\n if (typeof progressCallback === 'function') {\n progressCallback(progress);\n }\n else {\n logger.warn('progressCallback should be a function, not a ' +\n typeof progressCallback);\n }\n }\n });\n return [4 /*yield*/, uploader.upload()];\n case 3:\n response = _a.sent();\n logger.debug('upload result', response);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'success' }, null, \"Upload success for \" + key);\n return [2 /*return*/, {\n key: key,\n }];\n case 4:\n error_3 = _a.sent();\n logger.warn('error uploading', error_3);\n dispatchStorageEvent(track, 'upload', { method: 'put', result: 'failed' }, null, \"Error uploading \" + key);\n throw error_3;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Remove the object for specified key\n * @param {string} key - key of the object\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves upon successful removal of the object\n */\n AWSS3Provider.prototype.remove = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, prefix, final_key, s3, params, deleteObjectCommand, response, error_4;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track;\n prefix = this._prefix(opt);\n final_key = prefix + key;\n s3 = this._createNewS3Client(opt);\n logger.debug('remove ' + key + ' from ' + final_key);\n params = {\n Bucket: bucket,\n Key: final_key,\n };\n deleteObjectCommand = new DeleteObjectCommand(params);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, s3.send(deleteObjectCommand)];\n case 3:\n response = _a.sent();\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'success' }, null, \"Deleted \" + key + \" successfully\");\n return [2 /*return*/, response];\n case 4:\n error_4 = _a.sent();\n dispatchStorageEvent(track, 'delete', { method: 'remove', result: 'failed' }, null, \"Deletion of \" + key + \" failed with \" + error_4);\n throw error_4;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * List bucket objects relative to the level and prefix specified\n * @param {string} path - the path that contains objects\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves to list of keys for all objects in path\n */\n AWSS3Provider.prototype.list = function (path, config) {\n return __awaiter(this, void 0, void 0, function () {\n var credentialsOK, opt, bucket, track, maxKeys, prefix, final_path, s3, params, listObjectsCommand, response, list, error_5;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _a.sent();\n if (!credentialsOK) {\n return [2 /*return*/, Promise.reject('No credentials')];\n }\n opt = Object.assign({}, this._config, config);\n bucket = opt.bucket, track = opt.track, maxKeys = opt.maxKeys;\n prefix = this._prefix(opt);\n final_path = prefix + path;\n s3 = this._createNewS3Client(opt);\n logger.debug('list ' + path + ' from ' + final_path);\n params = {\n Bucket: bucket,\n Prefix: final_path,\n MaxKeys: maxKeys,\n };\n listObjectsCommand = new ListObjectsCommand(params);\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, s3.send(listObjectsCommand)];\n case 3:\n response = _a.sent();\n list = [];\n if (response && response.Contents) {\n list = response.Contents.map(function (item) {\n return {\n key: item.Key.substr(prefix.length),\n eTag: item.ETag,\n lastModified: item.LastModified,\n size: item.Size,\n };\n });\n }\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'success' }, null, list.length + \" items returned from list operation\");\n logger.debug('list', list);\n return [2 /*return*/, list];\n case 4:\n error_5 = _a.sent();\n logger.warn('list error', error_5);\n dispatchStorageEvent(track, 'list', { method: 'list', result: 'failed' }, null, \"Listing items failed: \" + error_5.message);\n throw error_5;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @private\n */\n AWSS3Provider.prototype._ensureCredentials = function () {\n var _this = this;\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for storage', cred);\n _this._config.credentials = cred;\n return true;\n })\n .catch(function (error) {\n logger.warn('ensure credentials error', error);\n return false;\n });\n };\n /**\n * @private\n */\n AWSS3Provider.prototype._prefix = function (config) {\n var credentials = config.credentials, level = config.level;\n var customPrefix = config.customPrefix || {};\n var identityId = config.identityId || credentials.identityId;\n var privatePath = (customPrefix.private !== undefined ? customPrefix.private : 'private/') +\n identityId +\n '/';\n var protectedPath = (customPrefix.protected !== undefined\n ? customPrefix.protected\n : 'protected/') +\n identityId +\n '/';\n var publicPath = customPrefix.public !== undefined ? customPrefix.public : 'public/';\n switch (level) {\n case 'private':\n return privatePath;\n case 'protected':\n return protectedPath;\n default:\n return publicPath;\n }\n };\n /**\n * @private creates an S3 client with new V3 aws sdk\n */\n AWSS3Provider.prototype._createNewS3Client = function (config, emitter) {\n var region = config.region, credentials = config.credentials, dangerouslyConnectToHttpEndpointForTesting = config.dangerouslyConnectToHttpEndpointForTesting;\n var localTestingConfig = {};\n if (dangerouslyConnectToHttpEndpointForTesting) {\n localTestingConfig = {\n endpoint: localTestingStorageEndpoint,\n s3BucketEndpoint: true,\n s3ForcePathStyle: true,\n };\n }\n var s3client = new S3Client(__assign(__assign({ region: region,\n credentials: credentials, customUserAgent: getAmplifyUserAgent() }, localTestingConfig), { requestHandler: new AxiosHttpHandler(httpHandlerOptions, emitter) }));\n return s3client;\n };\n AWSS3Provider.CATEGORY = 'Storage';\n AWSS3Provider.PROVIDER_NAME = 'AWSS3';\n return AWSS3Provider;\n}());\nexport { AWSS3Provider };\n/**\n * @deprecated use named import\n */\nexport default AWSS3Provider;\n//# sourceMappingURL=AWSS3Provider.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nimport { Amplify, ConsoleLogger as Logger, Parser } from '@aws-amplify/core';\nimport { AWSS3Provider } from './providers';\nvar logger = new Logger('StorageClass');\nvar DEFAULT_PROVIDER = 'AWSS3';\n/**\n * Provide storage methods to use AWS S3\n */\nvar Storage = /** @class */ (function () {\n /**\n * Initialize Storage\n * @param {Object} config - Configuration object for storage\n */\n function Storage() {\n this._config = {};\n this._pluggables = [];\n logger.debug('Storage Options', this._config);\n this.get = this.get.bind(this);\n this.put = this.put.bind(this);\n this.remove = this.remove.bind(this);\n this.list = this.list.bind(this);\n Amplify.register(this);\n }\n Storage.prototype.getModuleName = function () {\n return 'Storage';\n };\n /**\n * add plugin into Storage category\n * @param {Object} pluggable - an instance of the plugin\n */\n Storage.prototype.addPluggable = function (pluggable) {\n if (pluggable && pluggable.getCategory() === 'Storage') {\n this._pluggables.push(pluggable);\n var config = {};\n config = pluggable.configure(this._config[pluggable.getProviderName()]);\n return config;\n }\n };\n /**\n * Get the plugin object\n * @param providerName - the name of the plugin\n */\n Storage.prototype.getPluggable = function (providerName) {\n var pluggable = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n if (pluggable === undefined) {\n logger.debug('No plugin found with providerName', providerName);\n return null;\n }\n else\n return pluggable;\n };\n /**\n * Remove the plugin object\n * @param providerName - the name of the plugin\n */\n Storage.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n return;\n };\n /**\n * Configure Storage\n * @param {Object} config - Configuration object for storage\n * @return {Object} - Current configuration\n */\n Storage.prototype.configure = function (config) {\n var _this = this;\n logger.debug('configure Storage');\n if (!config)\n return this._config;\n var amplifyConfig = Parser.parseMobilehubConfig(config);\n var storageKeysFromConfig = Object.keys(amplifyConfig.Storage);\n var storageArrayKeys = [\n 'bucket',\n 'region',\n 'level',\n 'track',\n 'customPrefix',\n 'serverSideEncryption',\n 'SSECustomerAlgorithm',\n 'SSECustomerKey',\n 'SSECustomerKeyMD5',\n 'SSEKMSKeyId',\n ];\n var isInStorageArrayKeys = function (k) {\n return storageArrayKeys.some(function (x) { return x === k; });\n };\n var checkConfigKeysFromArray = function (k) {\n return k.find(function (k) { return isInStorageArrayKeys(k); });\n };\n if (storageKeysFromConfig &&\n checkConfigKeysFromArray(storageKeysFromConfig) &&\n !amplifyConfig.Storage[DEFAULT_PROVIDER]) {\n amplifyConfig.Storage[DEFAULT_PROVIDER] = {};\n }\n Object.entries(amplifyConfig.Storage).map(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n if (key && isInStorageArrayKeys(key) && value !== undefined) {\n amplifyConfig.Storage[DEFAULT_PROVIDER][key] = value;\n delete amplifyConfig.Storage[key];\n }\n });\n // only update new values for each provider\n Object.keys(amplifyConfig.Storage).forEach(function (providerName) {\n if (typeof amplifyConfig.Storage[providerName] !== 'string') {\n _this._config[providerName] = __assign(__assign({}, _this._config[providerName]), amplifyConfig.Storage[providerName]);\n }\n });\n this._pluggables.forEach(function (pluggable) {\n pluggable.configure(_this._config[pluggable.getProviderName()]);\n });\n if (this._pluggables.length === 0) {\n this.addPluggable(new AWSS3Provider());\n }\n return this._config;\n };\n /**\n * Get a presigned URL of the file or the object data when download:true\n *\n * @param {string} key - key of the object\n * @param {Object} [config] - { level : private|protected|public, download: true|false }\n * @return - A promise resolves to either a presigned url or the object\n */\n Storage.prototype.get = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.get(key, config)];\n });\n });\n };\n /**\n * Put a file in storage bucket specified to configure method\n * @param {string} key - key of the object\n * @param {Object} object - File to be put in bucket\n * @param {Object} [config] - { level : private|protected|public, contentType: MIME Types,\n * progressCallback: function }\n * @return - promise resolves to object on success\n */\n Storage.prototype.put = function (key, object, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.put(key, object, config)];\n });\n });\n };\n /**\n * Remove the object for specified key\n * @param {string} key - key of the object\n * @param {Object} [config] - { level : private|protected|public }\n * @return - Promise resolves upon successful removal of the object\n */\n Storage.prototype.remove = function (key, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.remove(key, config)];\n });\n });\n };\n /**\n * List bucket objects relative to the level and prefix specified\n * @param {String} path - the path that contains objects\n * @param {Object} [config] - { level : private|protected|public, maxKeys: NUMBER }\n * @return - Promise resolves to list of keys for all objects in path\n */\n Storage.prototype.list = function (path, config) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, provider, prov;\n return __generator(this, function (_b) {\n _a = (config || {}).provider, provider = _a === void 0 ? DEFAULT_PROVIDER : _a;\n prov = this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === provider; });\n if (prov === undefined) {\n logger.debug('No plugin found with providerName', provider);\n Promise.reject('No plugin found in Storage for the provider');\n }\n return [2 /*return*/, prov.list(path, config)];\n });\n });\n };\n return Storage;\n}());\nexport { Storage };\n/**\n * @deprecated use named import\n */\nexport default Storage;\n//# sourceMappingURL=Storage.js.map",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","module.exports = require('./lib/axios');","//! moment.js\n//! version : 2.25.3\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged and will be removed in an upcoming major release. Please refer to ' +\n 'http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n // console.log('token', token, 'parsedInput', parsedInput,\n // 'regex', getParseRegexForToken(token, config));\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.25.3';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\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","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 16;\n\n/**\n * @internal\n */\nexport const INIT = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476];\n","'use strict';\n\nconst util = require('./util');\nconst buildOptions = require('./util').buildOptions;\nconst xmlNode = require('./xmlNode');\nconst TagType = {OPENING: 1, CLOSING: 2, SELF: 3, CDATA: 4};\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attrNodeName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n ignoreNameSpace: false,\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseNodeValue: true,\n parseAttributeValue: false,\n arrayMode: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataTagName: false,\n cdataPositionChar: '\\\\c',\n tagValueProcessor: function(a, tagName) {\n return a;\n },\n attrValueProcessor: function(a, attrName) {\n return a;\n },\n stopNodes: []\n //decodeStrict: false,\n};\n\nexports.defaultOptions = defaultOptions;\n\nconst props = [\n 'attributeNamePrefix',\n 'attrNodeName',\n 'textNodeName',\n 'ignoreAttributes',\n 'ignoreNameSpace',\n 'allowBooleanAttributes',\n 'parseNodeValue',\n 'parseAttributeValue',\n 'arrayMode',\n 'trimValues',\n 'cdataTagName',\n 'cdataPositionChar',\n 'tagValueProcessor',\n 'attrValueProcessor',\n 'parseTrueNumberOnly',\n 'stopNodes'\n];\nexports.props = props;\n\nconst getTraversalObj = function(xmlData, options) {\n options = buildOptions(options, defaultOptions, props);\n //xmlData = xmlData.replace(/\\r?\\n/g, \" \");//make it single line\n xmlData = xmlData.replace(//g, ''); //Remove comments\n\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n\n const tagsRegx = new RegExp(regx, 'g');\n let tag = tagsRegx.exec(xmlData);\n let nextTag = tagsRegx.exec(xmlData);\n while (tag) {\n const tagType = checkForTagType(tag);\n\n if (tagType === TagType.CLOSING) {\n //add parsed data to parent node\n if (currentNode.parent && tag[12]) {\n currentNode.parent.val = util.getValue(currentNode.parent.val) + '' + processTagValue(tag, options, currentNode.parent.tagname);\n }\n if (options.stopNodes.length && options.stopNodes.includes(currentNode.tagname)) {\n currentNode.child = []\n if (currentNode.attrsMap == undefined) { currentNode.attrsMap = {}}\n currentNode.val = xmlData.substr(currentNode.startIndex + 1, tag.index - currentNode.startIndex - 1)\n }\n currentNode = currentNode.parent;\n } else if (tagType === TagType.CDATA) {\n if (options.cdataTagName) {\n //add cdata node\n const childNode = new xmlNode(options.cdataTagName, currentNode, tag[3]);\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n //for backtracking\n currentNode.val = util.getValue(currentNode.val) + options.cdataPositionChar;\n //add rest value to parent node\n if (tag[12]) {\n currentNode.val += processTagValue(tag, options);\n }\n } else {\n currentNode.val = (currentNode.val || '') + (tag[3] || '') + processTagValue(tag, options);\n }\n } else if (tagType === TagType.SELF) {\n if (currentNode && tag[12]) {\n currentNode.val = util.getValue(currentNode.val) + '' + processTagValue(tag, options);\n }\n\n const childNode = new xmlNode(options.ignoreNameSpace ? tag[7] : tag[5], currentNode, '');\n if (tag[8] && tag[8].length > 0) {\n tag[8] = tag[8].substr(0, tag[8].length - 1);\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n } else {\n //TagType.OPENING\n const childNode = new xmlNode(\n options.ignoreNameSpace ? tag[7] : tag[5],\n currentNode,\n processTagValue(tag, options)\n );\n if (options.stopNodes.length && options.stopNodes.includes(childNode.tagname)) {\n childNode.startIndex=tag.index + tag[1].length\n }\n childNode.attrsMap = buildAttributesMap(tag[8], options);\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n\n tag = nextTag;\n nextTag = tagsRegx.exec(xmlData);\n }\n\n return xmlObj;\n};\n\nfunction processTagValue(parsedTags, options, parentTagName) {\n const tagName = parsedTags[7] || parentTagName;\n let val = parsedTags[12];\n if (val) {\n if (options.trimValues) {\n val = val.trim();\n }\n val = options.tagValueProcessor(val, tagName);\n val = parseValue(val, options.parseNodeValue, options.parseTrueNumberOnly);\n }\n\n return val;\n}\n\nfunction checkForTagType(match) {\n if (match[4] === ']]>') {\n return TagType.CDATA;\n } else if (match[10] === '/') {\n return TagType.CLOSING;\n } else if (typeof match[8] !== 'undefined' && match[8].substr(match[8].length - 1) === '/') {\n return TagType.SELF;\n } else {\n return TagType.OPENING;\n }\n}\n\nfunction resolveNameSpace(tagname, options) {\n if (options.ignoreNameSpace) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\nfunction parseValue(val, shouldParse, parseTrueNumberOnly) {\n if (shouldParse && typeof val === 'string') {\n let parsed;\n if (val.trim() === '' || isNaN(val)) {\n parsed = val === 'true' ? true : val === 'false' ? false : val;\n } else {\n if (val.indexOf('0x') !== -1) {\n //support hexa decimal\n parsed = Number.parseInt(val, 16);\n } else if (val.indexOf('.') !== -1) {\n parsed = Number.parseFloat(val);\n val = val.replace(/0+$/,\"\");\n } else {\n parsed = Number.parseInt(val, 10);\n }\n if (parseTrueNumberOnly) {\n parsed = String(parsed) === val ? parsed : val;\n }\n }\n return parsed;\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])(.*?)\\\\3)?', 'g');\n\nfunction buildAttributesMap(attrStr, options) {\n if (!options.ignoreAttributes && typeof attrStr === 'string') {\n attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = resolveNameSpace(matches[i][1], options);\n if (attrName.length) {\n if (matches[i][4] !== undefined) {\n if (options.trimValues) {\n matches[i][4] = matches[i][4].trim();\n }\n matches[i][4] = options.attrValueProcessor(matches[i][4], attrName);\n attrs[options.attributeNamePrefix + attrName] = parseValue(\n matches[i][4],\n options.parseAttributeValue,\n options.parseTrueNumberOnly\n );\n } else if (options.allowBooleanAttributes) {\n attrs[options.attributeNamePrefix + attrName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (options.attrNodeName) {\n const attrCollection = {};\n attrCollection[options.attrNodeName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nexports.getTraversalObj = getTraversalObj;\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\nvar AbstractPubSubProvider = /** @class */ (function () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}());\nexport { AbstractPubSubProvider };\n//# sourceMappingURL=PubSubProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nvar ClientsQueue = /** @class */ (function () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n return __generator(this, function (_a) {\n promise = this.promises.get(clientId);\n if (promise) {\n return [2 /*return*/, promise];\n }\n promise = clientFactory(clientId);\n this.promises.set(clientId, promise);\n return [2 /*return*/, promise];\n });\n });\n };\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function () {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n return ClientsQueue;\n}());\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nvar MqttOverWSProvider = /** @class */ (function (_super) {\n __extends(MqttOverWSProvider, _super);\n function MqttOverWSProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, __assign(__assign({}, options), { clientId: options.clientId || uuid() })) || this;\n _this._clientsQueue = new ClientsQueue();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n return _this;\n }\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function () {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function () {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function () {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({ errorCode: errorCode }, args), null, 2));\n var topicsToDelete_1 = [];\n var clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode);\n // removing observers for disconnected clientId\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic.delete(observer);\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n });\n // forgiving any trace of clientId\n this._clientIdObservers.delete(clientId);\n // Removing topics that are not listen by an observer\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers.delete(topic);\n });\n }\n };\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url, clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n client = new Paho.Client(url, clientId);\n // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName, msg = _a.payloadString;\n _this._onMessage(topic, msg);\n };\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode, args = __rest(_a, [\"errorCode\"]);\n _this.onDisconnect(__assign({ clientId: clientId, errorCode: errorCode }, args));\n };\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function () { return resolve(client); },\n onFailure: reject,\n });\n })];\n case 1:\n _b.sent();\n return [2 /*return*/, client];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), { clientId: clientId }));\n })];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n if (client && client.isConnected()) {\n client.disconnect();\n }\n this.clientsQueue.remove(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4 /*yield*/, this.endpoint];\n case 1:\n url = _a.sent();\n return [4 /*yield*/, this.connect(this.clientId, { url: url })];\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) { return client.send(topic, message); });\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n var parsedMessage_1 = JSON.parse(msg);\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) { return observer.next(parsedMessage_1); });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n var observersForTopic = _this._topicObservers.get(topic);\n if (!observersForTopic) {\n observersForTopic = new Set();\n _this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n // @ts-ignore\n var client;\n var _a = options.clientId, clientId = _a === void 0 ? _this.clientId : _a;\n // this._clientIdObservers is used to close observers when client gets disconnected\n var observersForClientId = _this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n observersForClientId.add(observer);\n _this._clientIdObservers.set(clientId, observersForClientId);\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.endpoint];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = _a;\n _c.label = 3;\n case 3:\n url = _b;\n _c.label = 4;\n case 4:\n _c.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.connect(clientId, { url: url })];\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3 /*break*/, 7];\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n if (client) {\n _this._clientIdObservers.get(clientId).delete(observer);\n // No more observers per client => client not needed anymore\n if (_this._clientIdObservers.get(clientId).size === 0) {\n _this.disconnect(clientId);\n _this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n _this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n };\n return MqttOverWSProvider;\n}(AbstractPubSubProvider));\nexport { MqttOverWSProvider };\n//# sourceMappingURL=MqttOverWSProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\nvar AWSAppSyncProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncProvider, _super);\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function () {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\n return t;\n });\n topicsForClient.forEach(function (t) { return _this._cleanUpForTopic(t); });\n };\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n this._topicAlias.delete(topic);\n };\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n _this._topicObservers.delete(topic);\n }\n });\n this._cleanUp(clientId);\n }\n };\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n return [4 /*yield*/, _super.prototype.disconnect.call(this, clientId)];\n case 2:\n _a.sent();\n this._cleanUp(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var _b = __read(_a, 2), alias = _b[0], v = _b[1];\n return [v.topic, alias];\n });\n // Merge new aliases with old ones\n this._topicAlias = new Map(__spread(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) { return c.topics.indexOf(elem) > -1; });\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client, url = connectionInfoForTopic.url;\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set(),\n };\n }\n acc[clientId].topics.add(elem);\n }\n return acc;\n }, {}));\n // reconnect everything we have in the map\n return [4 /*yield*/, Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2), clientId = _b[0], _c = _b[1], url = _c.url, topics = _c.topics;\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.connect(clientId, {\n clientId: clientId,\n url: url,\n })];\n case 2:\n client = _d.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _d.sent();\n observer.error({ message: 'Failed to connect', error: err_1 });\n observer.complete();\n return [2 /*return*/, undefined];\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n _this._topicClient.set(topic, client);\n }\n });\n return [2 /*return*/, client];\n }\n });\n });\n }))];\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n _this._topicClient.delete(t);\n if (!Array.from(_this._topicClient.values()).some(function (c) { return c === client; })) {\n _this.disconnect(client.clientId);\n }\n }\n _this._topicObservers.delete(t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n var alias = _this._topicAlias.get(topic);\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2), origKey = _b[0], val = _b[1];\n return ((obj[(alias || origKey)] = val), obj);\n }, {});\n return value;\n });\n };\n return AWSAppSyncProvider;\n}(MqttOverWSProvider));\nexport { AWSAppSyncProvider };\n//# sourceMappingURL=AWSAppSyncProvider.js.map","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { getLocation } from '../language/location';\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ConsoleLogger as Logger } from '../Logger/ConsoleLogger';\nvar logger = new Logger('Util');\nvar NonRetryableError = /** @class */ (function (_super) {\n __extends(NonRetryableError, _super);\n function NonRetryableError(message) {\n var _this = _super.call(this, message) || this;\n _this.nonRetryable = true;\n return _this;\n }\n return NonRetryableError;\n}(Error));\nexport { NonRetryableError };\nvar isNonRetryableError = function (obj) {\n var key = 'nonRetryable';\n return obj && obj[key];\n};\n/**\n * @private\n * Internal use of Amplify only\n */\nexport function retry(functionToRetry, args, delayFn, attempt) {\n if (attempt === void 0) { attempt = 1; }\n return __awaiter(this, void 0, void 0, function () {\n var err_1, retryIn_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (typeof functionToRetry !== 'function') {\n throw Error('functionToRetry must be a function');\n }\n logger.debug(functionToRetry.name + \" attempt #\" + attempt + \" with this vars: \" + JSON.stringify(args));\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 8]);\n return [4 /*yield*/, functionToRetry.apply(void 0, __spread(args))];\n case 2: return [2 /*return*/, _a.sent()];\n case 3:\n err_1 = _a.sent();\n logger.debug(\"error on \" + functionToRetry.name + \": \" + err_1 + \" \");\n if (isNonRetryableError(err_1)) {\n logger.debug(functionToRetry.name + \" non retryable error \" + err_1);\n throw err_1;\n }\n retryIn_1 = delayFn(attempt, args, err_1);\n logger.debug(functionToRetry.name + \" retrying in \" + retryIn_1 + \" ms\");\n if (!(retryIn_1 !== false)) return [3 /*break*/, 6];\n return [4 /*yield*/, new Promise(function (res) { return setTimeout(res, retryIn_1); })];\n case 4:\n _a.sent();\n return [4 /*yield*/, retry(functionToRetry, args, delayFn, attempt + 1)];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: throw err_1;\n case 7: return [3 /*break*/, 8];\n case 8: return [2 /*return*/];\n }\n });\n });\n}\nvar MAX_DELAY_MS = 5 * 60 * 1000;\nfunction jitteredBackoff(maxDelayMs) {\n var BASE_TIME_MS = 100;\n var JITTER_FACTOR = 100;\n return function (attempt) {\n var delay = Math.pow(2, attempt) * BASE_TIME_MS + JITTER_FACTOR * Math.random();\n return delay > maxDelayMs ? false : delay;\n };\n}\n/**\n * @private\n * Internal use of Amplify only\n */\nexport var jitteredExponentialRetry = function (functionToRetry, args, maxDelayMs) {\n if (maxDelayMs === void 0) { maxDelayMs = MAX_DELAY_MS; }\n return retry(functionToRetry, args, jitteredBackoff(maxDelayMs));\n};\n//# sourceMappingURL=Retry.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport Observable from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { Logger, Credentials, Signer, Hub, Constants, USER_AGENT_HEADER, jitteredExponentialRetry, NonRetryableError, } from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { CONTROL_MSG } from '../index';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nvar dispatchApiEvent = function (event, data, message) {\n Hub.dispatch('api', { event: event, data: data, message: message }, 'PubSub', AMPLIFY_SYMBOL);\n};\nvar MAX_DELAY_MS = 5000;\nvar NON_RETRYABLE_CODES = [400, 401, 403];\nvar MESSAGE_TYPES;\n(function (MESSAGE_TYPES) {\n /**\n * Client -> Server message.\n * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_INIT\"] = \"connection_init\";\n /**\n * Server -> Client message\n * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_ERROR\"] = \"connection_error\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_ACK\"] = \"connection_ack\";\n /**\n * Client -> Server message.\n * This message type is for register subscriptions with AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_START\"] = \"start\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n */\n MESSAGE_TYPES[\"GQL_START_ACK\"] = \"start_ack\";\n /**\n * Server -> Client message.\n * This message type is for subscription message from AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_DATA\"] = \"data\";\n /**\n * Server -> Client message.\n * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_KEEP_ALIVE\"] = \"ka\";\n /**\n * Client -> Server message.\n * This message type is for unregister subscriptions with AWS AppSync RealTime\n */\n MESSAGE_TYPES[\"GQL_STOP\"] = \"stop\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n */\n MESSAGE_TYPES[\"GQL_COMPLETE\"] = \"complete\";\n /**\n * Server -> Client message.\n * This message type is for sending error messages from AWS AppSync RealTime to the client\n */\n MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\nvar SUBSCRIPTION_STATUS;\n(function (SUBSCRIPTION_STATUS) {\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"PENDING\"] = 0] = \"PENDING\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"CONNECTED\"] = 1] = \"CONNECTED\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"FAILED\"] = 2] = \"FAILED\";\n})(SUBSCRIPTION_STATUS || (SUBSCRIPTION_STATUS = {}));\nvar SOCKET_STATUS;\n(function (SOCKET_STATUS) {\n SOCKET_STATUS[SOCKET_STATUS[\"CLOSED\"] = 0] = \"CLOSED\";\n SOCKET_STATUS[SOCKET_STATUS[\"READY\"] = 1] = \"READY\";\n SOCKET_STATUS[SOCKET_STATUS[\"CONNECTING\"] = 2] = \"CONNECTING\";\n})(SOCKET_STATUS || (SOCKET_STATUS = {}));\nvar AWS_APPSYNC_REALTIME_HEADERS = {\n accept: 'application/json, text/javascript',\n 'content-encoding': 'amz-1.0',\n 'content-type': 'application/json; charset=UTF-8',\n};\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\nvar CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\nvar START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\nvar DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\nvar AWSAppSyncRealTimeProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n function AWSAppSyncRealTimeProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n return _this;\n }\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\n };\n AWSAppSyncRealTimeProvider.prototype.publish = function (_topics, _msg, _options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n var appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!appSyncGraphqlEndpoint) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\")),\n ],\n });\n observer.complete();\n }\n else {\n var subscriptionId_1 = uuid();\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1,\n });\n return function () { return __awaiter(_this, void 0, void 0, function () {\n var subscriptionState, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, 3, 4]);\n // Waiting that subscription has been connected before trying to unsubscribe\n return [4 /*yield*/, this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2 /*return*/];\n }\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n }\n else {\n throw new Error('Subscription never connected');\n }\n return [3 /*break*/, 4];\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3 /*break*/, 4];\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n }\n });\n };\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options, observer = _a.observer, subscriptionId = _a.subscriptionId;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _b, graphql_headers, subscriptionState, data, dataString, headerObj, _c, _d, subscriptionMessage, stringToAWSRealTime, err_2, _e, message, subscriptionFailedCallback_1, _f, subscriptionFailedCallback, subscriptionReadyCallback;\n var _g;\n var _this = this;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _b = options.graphql_headers, graphql_headers = _b === void 0 ? function () { return ({}); } : _b;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables,\n };\n // Having a subscription id map will make it simple to forward messages received\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: subscriptionState,\n startAckTimeoutId: null,\n });\n dataString = JSON.stringify(data);\n _c = [{}];\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region,\n })];\n case 1:\n _d = [__assign.apply(void 0, _c.concat([(_h.sent())]))];\n return [4 /*yield*/, graphql_headers()];\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_h.sent())])), (_g = {}, _g[USER_AGENT_HEADER] = Constants.userAgent, _g)]);\n subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: __assign({}, headerObj),\n },\n },\n type: MESSAGE_TYPES.GQL_START,\n };\n stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n _h.label = 3;\n case 3:\n _h.trys.push([3, 5, , 6]);\n return [4 /*yield*/, this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region,\n })];\n case 4:\n _h.sent();\n return [3 /*break*/, 6];\n case 5:\n err_2 = _h.sent();\n logger.debug({ err: err_2 });\n _e = err_2.message, message = _e === void 0 ? '' : _e;\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Connection failed: \" + message)),\n ],\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback;\n // Notify concurrent unsubscription\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n return [2 /*return*/];\n case 6:\n _f = this.subscriptionObserverMap.get(subscriptionId), subscriptionFailedCallback = _f.subscriptionFailedCallback, subscriptionReadyCallback = _f.subscriptionReadyCallback;\n // This must be done before sending the message in order to be listening immediately\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT),\n });\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n return [2 /*return*/];\n }\n });\n });\n };\n // Waiting that subscription has been connected before trying to unsubscribe\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionState;\n var _this = this;\n return __generator(this, function (_a) {\n subscriptionState = this.subscriptionObserverMap.get(subscriptionId).subscriptionState;\n // This in case unsubscribe is invoked before sending start subscription message\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2 /*return*/, new Promise(function (res, rej) {\n var _a = _this.subscriptionObserverMap.get(subscriptionId), observer = _a.observer, subscriptionState = _a.subscriptionState, variables = _a.variables, query = _a.query;\n _this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej,\n });\n })];\n }\n return [2 /*return*/];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n var unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP,\n };\n var stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n }\n catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({ err: err });\n }\n };\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId);\n // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n else {\n logger.debug('closing WebSocket...');\n clearTimeout(this.keepAliveTimeoutId);\n var tempSocket = this.awsRealTimeSocket;\n // Cleaning callbacks to avoid race condition, socket still exists\n tempSocket.onclose = undefined;\n tempSocket.onerror = undefined;\n tempSocket.close(1000);\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n };\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n var _a = JSON.parse(message.data), _b = _a.id, id = _b === void 0 ? '' : _b, payload = _a.payload, type = _a.type;\n var _c = this.subscriptionObserverMap.get(id) || {}, _d = _c.observer, observer = _d === void 0 ? null : _d, _e = _c.query, query = _e === void 0 ? '' : _e, _f = _c.variables, variables = _f === void 0 ? {} : _f, startAckTimeoutId = _c.startAckTimeoutId, subscriptionReadyCallback = _c.subscriptionReadyCallback, subscriptionFailedCallback = _c.subscriptionFailedCallback;\n logger.debug({ id: id, observer: observer, query: query, variables: variables });\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n }\n else {\n logger.debug(\"observer not found for id: \" + id);\n }\n return;\n }\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({ query: query, variables: variables }));\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent('connected', { query: query, variables: variables }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: null,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n });\n // TODO: emit event on hub but it requires to store the id first\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n clearTimeout(this.keepAliveTimeoutId);\n this.keepAliveTimeoutId = setTimeout(this._errorDisconnect.bind(this, CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: startAckTimeoutId,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n subscriptionState: subscriptionState,\n });\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Connection failed: \" + JSON.stringify(payload))),\n ],\n });\n clearTimeout(startAckTimeoutId);\n observer.complete();\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n };\n AWSAppSyncRealTimeProvider.prototype._errorDisconnect = function (msg) {\n logger.debug(\"Disconnect error: \" + msg);\n this.subscriptionObserverMap.forEach(function (_a) {\n var observer = _a.observer;\n if (!observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))],\n });\n }\n });\n this.subscriptionObserverMap.clear();\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.close();\n }\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var _a = this.subscriptionObserverMap.get(subscriptionId) || {}, observer = _a.observer, query = _a.query, variables = _a.variables;\n if (!observer) {\n return;\n }\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED,\n });\n if (observer && !observer.closed) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({ query: query, variables: variables }))),\n ],\n });\n // Cleanup will be automatically executed\n observer.complete();\n }\n logger.debug('timeoutStartSubscription', JSON.stringify({ query: query, variables: variables }));\n };\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, authenticationType = _a.authenticationType, apiKey = _a.apiKey, region = _a.region;\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var protocol, discoverableEndpoint, payloadString, headerString, _a, _b, headerQs, payloadQs, awsRealTimeUrl, err_3;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({ res: res, rej: rej });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3 /*break*/, 5];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 4, , 5]);\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = appSyncGraphqlEndpoint\n .replace('https://', protocol)\n .replace('http://', protocol)\n .replace('appsync-api', 'appsync-realtime-api')\n .replace('gogi-beta', 'grt-beta');\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region,\n })];\n case 2:\n headerString = _b.apply(_a, [_c.sent()]);\n headerQs = Buffer.from(headerString).toString('base64');\n payloadQs = Buffer.from(payloadString).toString('base64');\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4 /*yield*/, this._initializeRetryableHandshake({ awsRealTimeUrl: awsRealTimeUrl })];\n case 3:\n _c.sent();\n this.promiseArray.forEach(function (_a) {\n var res = _a.res;\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n return [3 /*break*/, 5];\n case 4:\n err_3 = _c.sent();\n this.promiseArray.forEach(function (_a) {\n var rej = _a.rej;\n return rej(err_3);\n });\n this.promiseArray = [];\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n }); });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4 /*yield*/, jitteredExponentialRetry(this._initializeHandshake.bind(this), [{ awsRealTimeUrl: awsRealTimeUrl }], MAX_DELAY_MS)];\n case 1:\n _b.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n var err_4, errorType, errorCode;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, , 5]);\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n var newSocket = new WebSocket(awsRealTimeUrl, 'graphql-ws');\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n newSocket.onclose = function () {\n rej(new Error('Connection handshake error'));\n };\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n })()];\n case 2:\n _b.sent();\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n var ackOk = false;\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\n };\n _this.awsRealTimeSocket.onmessage = function (message) {\n logger.debug(\"subscription message from AWS AppSyncRealTime: \" + message.data + \" \");\n var data = JSON.parse(message.data);\n var type = data.type, _a = data.payload, _b = (_a === void 0 ? {} : _a).connectionTimeoutMs, connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage = _this._handleIncomingSubscriptionMessage.bind(_this);\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload, _d = (_c === void 0 ? {} : _c).errors, _e = __read(_d === void 0 ? [] : _d, 1), _f = _e[0], _g = _f === void 0 ? {} : _f, _h = _g.errorType, errorType = _h === void 0 ? '' : _h, _j = _g.errorCode, errorCode = _j === void 0 ? 0 : _j;\n rej({ errorType: errorType, errorCode: errorCode });\n }\n };\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n };\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n function checkAckOk() {\n if (!ackOk) {\n rej(new Error(\"Connection timeout: ack from AWSRealTime was not received on \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n }\n setTimeout(checkAckOk.bind(_this), CONNECTION_INIT_TIMEOUT);\n });\n })()];\n case 3:\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n err_4 = _b.sent();\n errorType = err_4.errorType, errorCode = err_4.errorCode;\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n }\n else if (errorType) {\n throw new Error(errorType);\n }\n else {\n throw err_4;\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType, payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, apiKey = _a.apiKey, region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var headerHandler, handler, host, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n headerHandler = {\n API_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n AWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n OPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n AMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this),\n };\n handler = headerHandler[authenticationType];\n if (typeof handler !== 'function') {\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2 /*return*/, ''];\n }\n host = url.parse(appSyncGraphqlEndpoint).host;\n return [4 /*yield*/, handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host,\n })];\n case 1:\n result = _b.sent();\n return [2 /*return*/, result];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeCUPHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var session;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Auth.currentSession()];\n case 1:\n session = _b.sent();\n return [2 /*return*/, {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host,\n }];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeOPENIDHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var federatedInfo;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Cache.getItem('federatedInfo')];\n case 1:\n federatedInfo = _b.sent();\n if (!federatedInfo || !federatedInfo.token) {\n throw new Error('No federated jwt');\n }\n return [2 /*return*/, {\n Authorization: federatedInfo.token,\n host: host,\n }];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey, host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var dt, dtStr;\n return __generator(this, function (_b) {\n dt = new Date();\n dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return [2 /*return*/, {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey,\n }];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var endpointInfo, credentialsOK, creds, request, signed_params;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpointInfo = {\n region: region,\n service: 'appsync',\n };\n return [4 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _b.sent();\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n return [4 /*yield*/, Credentials.get().then(function (credentials) { return ({\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken,\n }); })];\n case 2:\n creds = _b.sent();\n request = {\n url: \"\" + appSyncGraphqlEndpoint + canonicalUri,\n data: payload,\n method: 'POST',\n headers: __assign({}, AWS_APPSYNC_REALTIME_HEADERS),\n };\n signed_params = Signer.sign(request, creds, endpointInfo);\n return [2 /*return*/, signed_params.headers];\n }\n });\n });\n };\n /**\n * @private\n */\n AWSAppSyncRealTimeProvider.prototype._ensureCredentials = function () {\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider));\nexport { AWSAppSyncRealTimeProvider };\n//# sourceMappingURL=AWSAppSyncRealTimeProvider.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// import '../Common/Polyfills';\nimport Observable from 'zen-observable-ts';\nimport { Amplify, ConsoleLogger as Logger, INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER, } from '@aws-amplify/core';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\nvar logger = new Logger('PubSub');\nvar PubSubClass = /** @class */ (function () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSubClass(options) {\n this._options = options;\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n Amplify.register(this);\n }\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncRealTimeProvider\", {\n /**\n * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\n });\n PubSubClass.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n PubSubClass.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', { opt: opt });\n this._options = Object.assign({}, this._options, opt);\n this._pluggables.map(function (pluggable) { return pluggable.configure(_this._options); });\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n PubSubClass.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n config = pluggable.configure(this._options);\n return [2 /*return*/, config];\n }\n return [2 /*return*/];\n });\n });\n };\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n return this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n };\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) { options = {}; }\n var providerName = options.provider;\n if (!providerName) {\n return this._pluggables;\n }\n var provider = this.getProviderByName(providerName);\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n return [provider];\n };\n PubSubClass.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n PubSubClass.prototype.subscribe = function (topics, options) {\n logger.debug('subscribe options', options);\n var providers = this.getProviders(options);\n return new Observable(function (observer) {\n var observables = providers.map(function (provider) { return ({\n provider: provider,\n observable: provider.subscribe(topics, options),\n }); });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider, observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function (value) { return observer.next({ provider: provider, value: value }); },\n error: function (error) { return observer.error({ provider: provider, error: error }); },\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });\n };\n });\n };\n return PubSubClass;\n}());\nexport { PubSubClass };\nexport var PubSub = new PubSubClass(null);\n//# sourceMappingURL=PubSub.js.map","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\nexport var DateUtils = {\n /**\n * Milliseconds to offset the date to compensate for clock skew between device & services\n */\n clockOffset: 0,\n getDateWithClockOffset: function () {\n if (DateUtils.clockOffset) {\n return new Date(new Date().getTime() + DateUtils.clockOffset);\n }\n else {\n return new Date();\n }\n },\n /**\n * @returns {number} Clock offset in milliseconds\n */\n getClockOffset: function () {\n return DateUtils.clockOffset;\n },\n /**\n * @param {number} offset Clock offset in milliseconds\n */\n setClockOffset: function (offset) {\n DateUtils.clockOffset = offset;\n },\n};\n//# sourceMappingURL=DateUtils.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __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 { ConsoleLogger as Logger } from './Logger';\nimport { Sha256 as jsSha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { parse, format } from 'url';\nimport { DateUtils } from './Util';\nvar logger = new Logger('Signer');\nvar DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\nvar encrypt = function (key, src) {\n var hash = new jsSha256(key);\n hash.update(src);\n return hash.digestSync();\n};\nvar hash = function (src) {\n var arg = src || '';\n var hash = new jsSha256();\n hash.update(arg);\n return toHex(hash.digestSync());\n};\n/**\n * @private\n * RFC 3986 compliant version of encodeURIComponent\n */\nvar escape_RFC3986 = function (component) {\n return component.replace(/[!'()*]/g, function (c) {\n return ('%' +\n c\n .charCodeAt(0)\n .toString(16)\n .toUpperCase());\n });\n};\n/**\n * @private\n * Create canonical query string\n *\n */\nvar canonical_query = function (query) {\n if (!query || query.length === 0) {\n return '';\n }\n return query\n .split('&')\n .map(function (e) {\n var key_val = e.split('=');\n if (key_val.length === 1) {\n return e;\n }\n else {\n var reencoded_val = escape_RFC3986(key_val[1]);\n return key_val[0] + '=' + reencoded_val;\n }\n })\n .sort(function (a, b) {\n var key_a = a.split('=')[0];\n var key_b = b.split('=')[0];\n if (key_a === key_b) {\n return a < b ? -1 : 1;\n }\n else {\n return key_a < key_b ? -1 : 1;\n }\n })\n .join('&');\n};\n/**\n* @private\n* Create canonical headers\n*\n
\nCanonicalHeaders =\n    CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN\nCanonicalHeadersEntry =\n    Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\\n'\n
\n*/\nvar canonical_headers = function (headers) {\n if (!headers || Object.keys(headers).length === 0) {\n return '';\n }\n return (Object.keys(headers)\n .map(function (key) {\n return {\n key: key.toLowerCase(),\n value: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : '',\n };\n })\n .sort(function (a, b) {\n return a.key < b.key ? -1 : 1;\n })\n .map(function (item) {\n return item.key + ':' + item.value;\n })\n .join('\\n') + '\\n');\n};\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\nvar signed_headers = function (headers) {\n return Object.keys(headers)\n .map(function (key) {\n return key.toLowerCase();\n })\n .sort()\n .join(';');\n};\n/**\n* @private\n* Create canonical request\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}\n*\n
\nCanonicalRequest =\n    HTTPRequestMethod + '\\n' +\n    CanonicalURI + '\\n' +\n    CanonicalQueryString + '\\n' +\n    CanonicalHeaders + '\\n' +\n    SignedHeaders + '\\n' +\n    HexEncode(Hash(RequestPayload))\n
\n*/\nvar canonical_request = function (request) {\n var url_info = parse(request.url);\n return [\n request.method || '/',\n encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'),\n canonical_query(url_info.query),\n canonical_headers(request.headers),\n signed_headers(request.headers),\n hash(request.data),\n ].join('\\n');\n};\nvar parse_service_info = function (request) {\n var url_info = parse(request.url), host = url_info.host;\n var matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n var parsed = (matched || []).slice(1, 3);\n if (parsed[1] === 'es') {\n // Elastic Search\n parsed = parsed.reverse();\n }\n return {\n service: request.service || parsed[0],\n region: request.region || parsed[1],\n };\n};\nvar credential_scope = function (d_str, region, service) {\n return [d_str, region, service, 'aws4_request'].join('/');\n};\n/**\n* @private\n* Create a string to sign\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}\n*\n
\nStringToSign =\n    Algorithm + \\n +\n    RequestDateTime + \\n +\n    CredentialScope + \\n +\n    HashedCanonicalRequest\n
\n*/\nvar string_to_sign = function (algorithm, canonical_request, dt_str, scope) {\n return [algorithm, dt_str, scope, hash(canonical_request)].join('\\n');\n};\n/**\n* @private\n* Create signing key\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}\n*\n
\nkSecret = your secret access key\nkDate = HMAC(\"AWS4\" + kSecret, Date)\nkRegion = HMAC(kDate, Region)\nkService = HMAC(kRegion, Service)\nkSigning = HMAC(kService, \"aws4_request\")\n
\n*/\nvar get_signing_key = function (secret_key, d_str, service_info) {\n logger.debug(service_info);\n var k = 'AWS4' + secret_key, k_date = encrypt(k, d_str), k_region = encrypt(k_date, service_info.region), k_service = encrypt(k_region, service_info.service), k_signing = encrypt(k_service, 'aws4_request');\n return k_signing;\n};\nvar get_signature = function (signing_key, str_to_sign) {\n return toHex(encrypt(signing_key, str_to_sign));\n};\n/**\n * @private\n * Create authorization header\n * Refer to\n * {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}\n */\nvar get_authorization_header = function (algorithm, access_key, scope, signed_headers, signature) {\n return [\n algorithm + ' ' + 'Credential=' + access_key + '/' + scope,\n 'SignedHeaders=' + signed_headers,\n 'Signature=' + signature,\n ].join(', ');\n};\nvar Signer = /** @class */ (function () {\n function Signer() {\n }\n /**\n * Sign a HTTP request, add 'Authorization' header to request param\n * @method sign\n * @memberof Signer\n * @static\n *\n * @param {object} request - HTTP request object\n
\n    request: {\n        method: GET | POST | PUT ...\n        url: ...,\n        headers: {\n            header1: ...\n        },\n        data: data\n    }\n    
\n * @param {object} access_info - AWS access credential info\n
\n    access_info: {\n        access_key: ...,\n        secret_key: ...,\n        session_token: ...\n    }\n    
\n * @param {object} [service_info] - AWS service type and region, optional,\n * if not provided then parse out from url\n
\n    service_info: {\n        service: ...,\n        region: ...\n    }\n    
\n *\n * @returns {object} Signed HTTP request\n */\n Signer.sign = function (request, access_info, service_info) {\n if (service_info === void 0) { service_info = null; }\n request.headers = request.headers || {};\n // datetime string and date string\n var dt = DateUtils.getDateWithClockOffset(), dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''), d_str = dt_str.substr(0, 8);\n var url_info = parse(request.url);\n request.headers['host'] = url_info.host;\n request.headers['x-amz-date'] = dt_str;\n if (access_info.session_token) {\n request.headers['X-Amz-Security-Token'] = access_info.session_token;\n }\n // Task 1: Create a Canonical Request\n var request_str = canonical_request(request);\n logger.debug(request_str);\n // Task 2: Create a String to Sign\n var serviceInfo = service_info || parse_service_info(request), scope = credential_scope(d_str, serviceInfo.region, serviceInfo.service), str_to_sign = string_to_sign(DEFAULT_ALGORITHM, request_str, dt_str, scope);\n // Task 3: Calculate the Signature\n var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo), signature = get_signature(signing_key, str_to_sign);\n // Task 4: Adding the Signing information to the Request\n var authorization_header = get_authorization_header(DEFAULT_ALGORITHM, access_info.access_key, scope, signed_headers(request.headers), signature);\n request.headers['Authorization'] = authorization_header;\n return request;\n };\n Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {\n var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n var now = DateUtils.getDateWithClockOffset()\n .toISOString()\n .replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8);\n // Intentionally discarding search\n var _a = parse(urlToSign, true, true), search = _a.search, parsedUrl = __rest(_a, [\"search\"]);\n var host = parsedUrl.host;\n var signedHeaders = { host: host };\n var _b = serviceInfo || parse_service_info({ url: format(parsedUrl) }), region = _b.region, service = _b.service;\n var credentialScope = credential_scope(today, region, service);\n // IoT service does not allow the session token in the canonical request\n // https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;\n var queryParams = __assign(__assign(__assign({ 'X-Amz-Algorithm': DEFAULT_ALGORITHM, 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'), 'X-Amz-Date': now.substr(0, 16) }, (sessionTokenRequired\n ? { 'X-Amz-Security-Token': \"\" + accessInfo.session_token }\n : {})), (expiration ? { 'X-Amz-Expires': \"\" + expiration } : {})), { 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',') });\n var canonicalRequest = canonical_request({\n method: method,\n url: format(__assign(__assign({}, parsedUrl), { query: __assign(__assign({}, parsedUrl.query), queryParams) })),\n headers: signedHeaders,\n data: body,\n });\n var stringToSign = string_to_sign(DEFAULT_ALGORITHM, canonicalRequest, now, credentialScope);\n var signing_key = get_signing_key(accessInfo.secret_key, today, {\n region: region,\n service: service,\n });\n var signature = get_signature(signing_key, stringToSign);\n var additionalQueryParams = __assign({ 'X-Amz-Signature': signature }, (accessInfo.session_token && {\n 'X-Amz-Security-Token': accessInfo.session_token,\n }));\n var result = format({\n protocol: parsedUrl.protocol,\n slashes: true,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n pathname: parsedUrl.pathname,\n query: __assign(__assign(__assign({}, parsedUrl.query), queryParams), additionalQueryParams),\n });\n return result;\n };\n return Signer;\n}());\nexport { Signer };\n/**\n * @deprecated use per-function import\n */\nexport default Signer;\n//# sourceMappingURL=Signer.js.map","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { getLocation } from '../language/location';\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = {};\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var k in node) {\n if (node.hasOwnProperty(k)) {\n clone[k] = node[k];\n }\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + JSON.stringify(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","/**\n * Copyright (c) 2015-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 */\nimport { visit } from './visitor';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n locations = _ref31.locations;\n return 'directive @' + name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value, isDescription) {\n var escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1 ? \"\\\"\\\"\\\"\".concat(escaped.replace(/\"$/, '\"\\n'), \"\\\"\\\"\\\"\") : \"\\\"\\\"\\\"\\n\".concat(isDescription ? escaped : indent(escaped), \"\\n\\\"\\\"\\\"\");\n}","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * Used to print values in error messages.\n */\nexport default function inspect(value) {\n return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {\n return \"\".concat(k, \": \").concat(inspect(value[k]));\n }).join(', ') + '}' : typeof value === 'string' ? '\"' + value + '\"' : typeof value === 'function' ? \"[function \".concat(value.name, \"]\") : String(value);\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nexport default function invariant(condition, message) {\n /* istanbul ignore else */\n if (!condition) {\n throw new Error(message);\n }\n}","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Copyright (c) 2015-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 * strict\n */\nimport invariant from '../jsutils/invariant';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\nexport var Source = function Source(body, name, locationOffset) {\n _defineProperty(this, \"body\", void 0);\n\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"locationOffset\", void 0);\n\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n !(this.locationOffset.line > 0) ? invariant(0, 'line in locationOffset is 1-indexed and must be positive') : void 0;\n !(this.locationOffset.column > 0) ? invariant(0, 'column in locationOffset is 1-indexed and must be positive') : void 0;\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * The `applyToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method applyToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function applyToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * Coffeescript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport default function blockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent < line.length && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n if (commonIndent) {\n for (var _i = 1; _i < lines.length; _i++) {\n lines[_i] = lines[_i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}","/**\n * Copyright (c) 2015-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 * strict\n */\nimport { syntaxError } from '../error';\nimport blockStringValue from './blockStringValue';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\n/**\n * A helper function to describe a token as a string for debugging\n */\nexport function getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\nvar charCodeAt = String.prototype.charCodeAt;\nvar slice = String.prototype.slice;\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nTok.prototype.toJSON = Tok.prototype.inspect = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n};\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace and comments until it finds the next lexable\n * token, then lexes punctuators immediately or calls the appropriate helper\n * function for more complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = charCodeAt.call(body, pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (charCodeAt.call(body, pos + 1) === 46 && charCodeAt.call(body, pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return \"Unexpected single quote character ('), did you mean to use \" + 'a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * or commented character, then returns the position of that character for\n * lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = charCodeAt.call(body, position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (charCodeAt.call(body, position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = charCodeAt.call(body, ++position);\n } while (code !== null && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, slice.call(body, start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = charCodeAt.call(body, ++position);\n }\n\n if (code === 48) {\n // 0\n code = charCodeAt.call(body, ++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = charCodeAt.call(body, ++position);\n }\n\n position = readDigits(source, position, code);\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, slice.call(body, start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = charCodeAt.call(body, ++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += slice.call(body, chunkStart, position - 1);\n code = charCodeAt.call(body, position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n // u\n var charCode = uniCharCode(charCodeAt.call(body, position + 1), charCodeAt.call(body, position + 2), charCodeAt.call(body, position + 3), charCodeAt.call(body, position + 4));\n\n if (charCode < 0) {\n throw syntaxError(source, position, 'Invalid character escape sequence: ' + \"\\\\u\".concat(body.slice(position + 1, position + 5), \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34) {\n rawValue += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, blockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n } // Escape Triple-Quote (\\\"\"\")\n\n\n if (code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {\n rawValue += slice.call(body, chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexidecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && (code = charCodeAt.call(body, position)) !== null && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, slice.call(body, start, position));\n}","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","/**\n * Copyright (c) 2015-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 * strict\n */\n\n/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","/**\n * Copyright (c) 2015-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 * strict\n */\nimport inspect from '../jsutils/inspect';\nimport { Source } from './source';\nimport { syntaxError } from '../error';\nimport { createLexer, TokenKind, getTokenDesc } from './lexer';\nimport { Kind } from './kinds';\nimport { DirectiveLocation } from './directiveLocation';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var lexer = createLexer(sourceObj, options || {});\n return parseDocument(lexer);\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var value = parseValueLiteral(lexer, false);\n expect(lexer, TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var type = parseTypeReference(lexer);\n expect(lexer, TokenKind.EOF);\n return type;\n}\n/**\n * Converts a name lex token into a name parse node.\n */\n\nfunction parseName(lexer) {\n var token = expect(lexer, TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: loc(lexer, token)\n };\n} // Implements the parsing rules in the Document section.\n\n/**\n * Document : Definition+\n */\n\n\nfunction parseDocument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: many(lexer, TokenKind.SOF, parseDefinition, TokenKind.EOF),\n loc: loc(lexer, start)\n };\n}\n/**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n */\n\n\nfunction parseDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n case 'fragment':\n return parseExecutableDefinition(lexer);\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return parseTypeSystemDefinition(lexer);\n\n case 'extend':\n return parseTypeSystemExtension(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseExecutableDefinition(lexer);\n } else if (peekDescription(lexer)) {\n return parseTypeSystemDefinition(lexer);\n }\n\n throw unexpected(lexer);\n}\n/**\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n\n\nfunction parseExecutableDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return parseOperationDefinition(lexer);\n\n case 'fragment':\n return parseFragmentDefinition(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseOperationDefinition(lexer);\n }\n\n throw unexpected(lexer);\n} // Implements the parsing rules in the Operations section.\n\n/**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n\nfunction parseOperationDefinition(lexer) {\n var start = lexer.token;\n\n if (peek(lexer, TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n var operation = parseOperationType(lexer);\n var name;\n\n if (peek(lexer, TokenKind.NAME)) {\n name = parseName(lexer);\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: parseVariableDefinitions(lexer),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationType : one of query mutation subscription\n */\n\n\nfunction parseOperationType(lexer) {\n var operationToken = expect(lexer, TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw unexpected(lexer, operationToken);\n}\n/**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n\nfunction parseVariableDefinitions(lexer) {\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, parseVariableDefinition, TokenKind.PAREN_R) : [];\n}\n/**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseVariableDefinition(lexer) {\n var start = lexer.token;\n\n if (lexer.options.experimentalVariableDefinitionDirectives) {\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n directives: parseDirectives(lexer, true),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Variable : $ Name\n */\n\n\nfunction parseVariable(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * SelectionSet : { Selection+ }\n */\n\n\nfunction parseSelectionSet(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: many(lexer, TokenKind.BRACE_L, parseSelection, TokenKind.BRACE_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n\nfunction parseSelection(lexer) {\n return peek(lexer, TokenKind.SPREAD) ? parseFragment(lexer) : parseField(lexer);\n}\n/**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n\nfunction parseField(lexer) {\n var start = lexer.token;\n var nameOrAlias = parseName(lexer);\n var alias;\n var name;\n\n if (skip(lexer, TokenKind.COLON)) {\n alias = nameOrAlias;\n name = parseName(lexer);\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: parseArguments(lexer, false),\n directives: parseDirectives(lexer, false),\n selectionSet: peek(lexer, TokenKind.BRACE_L) ? parseSelectionSet(lexer) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n\nfunction parseArguments(lexer, isConst) {\n var item = isConst ? parseConstArgument : parseArgument;\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, item, TokenKind.PAREN_R) : [];\n}\n/**\n * Argument[Const] : Name : Value[?Const]\n */\n\n\nfunction parseArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, false)),\n loc: loc(lexer, start)\n };\n}\n\nfunction parseConstArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseConstValue(lexer)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Fragments section.\n\n/**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n\nfunction parseFragment(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.SPREAD);\n\n if (peek(lexer, TokenKind.NAME) && lexer.token.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: parseFragmentName(lexer),\n directives: parseDirectives(lexer, false),\n loc: loc(lexer, start)\n };\n }\n\n var typeCondition;\n\n if (lexer.token.value === 'on') {\n lexer.advance();\n typeCondition = parseNamedType(lexer);\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: typeCondition,\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n\nfunction parseFragmentDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (lexer.options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n variableDefinitions: parseVariableDefinitions(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentName : Name but not `on`\n */\n\n\nfunction parseFragmentName(lexer) {\n if (lexer.token.value === 'on') {\n throw unexpected(lexer);\n }\n\n return parseName(lexer);\n} // Implements the parsing rules in the Values section.\n\n/**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n\nfunction parseValueLiteral(lexer, isConst) {\n var token = lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return parseList(lexer, isConst);\n\n case TokenKind.BRACE_L:\n return parseObject(lexer, isConst);\n\n case TokenKind.INT:\n lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.FLOAT:\n lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return parseStringLiteral(lexer);\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n lexer.advance();\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: loc(lexer, token)\n };\n } else if (token.value === 'null') {\n lexer.advance();\n return {\n kind: Kind.NULL,\n loc: loc(lexer, token)\n };\n }\n\n lexer.advance();\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return parseVariable(lexer);\n }\n\n break;\n }\n\n throw unexpected(lexer);\n}\n\nfunction parseStringLiteral(lexer) {\n var token = lexer.token;\n lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: loc(lexer, token)\n };\n}\n\nexport function parseConstValue(lexer) {\n return parseValueLiteral(lexer, true);\n}\n\nfunction parseValueValue(lexer) {\n return parseValueLiteral(lexer, false);\n}\n/**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n\nfunction parseList(lexer, isConst) {\n var start = lexer.token;\n var item = isConst ? parseConstValue : parseValueValue;\n return {\n kind: Kind.LIST,\n values: any(lexer, TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n\n\nfunction parseObject(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.BRACE_L);\n var fields = [];\n\n while (!skip(lexer, TokenKind.BRACE_R)) {\n fields.push(parseObjectField(lexer, isConst));\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n\nfunction parseObjectField(lexer, isConst) {\n var start = lexer.token;\n return {\n kind: Kind.OBJECT_FIELD,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, isConst)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Directives section.\n\n/**\n * Directives[Const] : Directive[?Const]+\n */\n\n\nfunction parseDirectives(lexer, isConst) {\n var directives = [];\n\n while (peek(lexer, TokenKind.AT)) {\n directives.push(parseDirective(lexer, isConst));\n }\n\n return directives;\n}\n/**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n\n\nfunction parseDirective(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: parseName(lexer),\n arguments: parseArguments(lexer, isConst),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Types section.\n\n/**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n\nexport function parseTypeReference(lexer) {\n var start = lexer.token;\n var type;\n\n if (skip(lexer, TokenKind.BRACKET_L)) {\n type = parseTypeReference(lexer);\n expect(lexer, TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n } else {\n type = parseNamedType(lexer);\n }\n\n if (skip(lexer, TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n }\n\n return type;\n}\n/**\n * NamedType : Name\n */\n\nexport function parseNamedType(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Type Definition section.\n\n/**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\nfunction parseTypeSystemDefinition(lexer) {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = peekDescription(lexer) ? lexer.lookahead() : lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaDefinition(lexer);\n\n case 'scalar':\n return parseScalarTypeDefinition(lexer);\n\n case 'type':\n return parseObjectTypeDefinition(lexer);\n\n case 'interface':\n return parseInterfaceTypeDefinition(lexer);\n\n case 'union':\n return parseUnionTypeDefinition(lexer);\n\n case 'enum':\n return parseEnumTypeDefinition(lexer);\n\n case 'input':\n return parseInputObjectTypeDefinition(lexer);\n\n case 'directive':\n return parseDirectiveDefinition(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n\nfunction peekDescription(lexer) {\n return peek(lexer, TokenKind.STRING) || peek(lexer, TokenKind.BLOCK_STRING);\n}\n/**\n * Description : StringValue\n */\n\n\nfunction parseDescription(lexer) {\n if (peekDescription(lexer)) {\n return parseStringLiteral(lexer);\n }\n}\n/**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n\n\nfunction parseSchemaDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n\nfunction parseOperationTypeDefinition(lexer) {\n var start = lexer.token;\n var operation = parseOperationType(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseNamedType(lexer);\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n\nfunction parseScalarTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n\nfunction parseImplementsInterfaces(lexer) {\n var types = [];\n\n if (lexer.token.value === 'implements') {\n lexer.advance(); // Optional leading ampersand\n\n skip(lexer, TokenKind.AMP);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.AMP) || // Legacy support for the SDL?\n lexer.options.allowLegacySDLImplementsInterfaces && peek(lexer, TokenKind.NAME));\n }\n\n return types;\n}\n/**\n * FieldsDefinition : { FieldDefinition+ }\n */\n\n\nfunction parseFieldsDefinition(lexer) {\n // Legacy support for the SDL?\n if (lexer.options.allowLegacySDLEmptyFields && peek(lexer, TokenKind.BRACE_L) && lexer.lookahead().kind === TokenKind.BRACE_R) {\n lexer.advance();\n lexer.advance();\n return [];\n }\n\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseFieldDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n\nfunction parseFieldDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n\nfunction parseArgumentDefs(lexer) {\n if (!peek(lexer, TokenKind.PAREN_L)) {\n return [];\n }\n\n return many(lexer, TokenKind.PAREN_L, parseInputValueDef, TokenKind.PAREN_R);\n}\n/**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseInputValueDef(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var defaultValue;\n\n if (skip(lexer, TokenKind.EQUALS)) {\n defaultValue = parseConstValue(lexer);\n }\n\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseInterfaceTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n\nfunction parseUnionTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n\nfunction parseUnionMemberTypes(lexer) {\n var types = [];\n\n if (skip(lexer, TokenKind.EQUALS)) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n }\n\n return types;\n}\n/**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n\nfunction parseEnumTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n\n\nfunction parseEnumValuesDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseEnumValueDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n\n\nfunction parseEnumValueDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n\nfunction parseInputObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n\n\nfunction parseInputFieldsDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseInputValueDef, TokenKind.BRACE_R) : [];\n}\n/**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n\nfunction parseTypeSystemExtension(lexer) {\n var keywordToken = lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaExtension(lexer);\n\n case 'scalar':\n return parseScalarTypeExtension(lexer);\n\n case 'type':\n return parseObjectTypeExtension(lexer);\n\n case 'interface':\n return parseInterfaceTypeExtension(lexer);\n\n case 'union':\n return parseUnionTypeExtension(lexer);\n\n case 'enum':\n return parseEnumTypeExtension(lexer);\n\n case 'input':\n return parseInputObjectTypeExtension(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n/**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n\n\nfunction parseSchemaExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R) : [];\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n\nfunction parseScalarTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n\n if (directives.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n\nfunction parseObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n\n\nfunction parseInterfaceTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n\nfunction parseUnionTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n\n if (directives.length === 0 && types.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n\nfunction parseEnumTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n\n if (directives.length === 0 && values.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n\nfunction parseInputObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? on DirectiveLocations\n */\n\n\nfunction parseDirectiveDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'directive');\n expect(lexer, TokenKind.AT);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expectKeyword(lexer, 'on');\n var locations = parseDirectiveLocations(lexer);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n locations: locations,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n\nfunction parseDirectiveLocations(lexer) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(parseDirectiveLocation(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n\n return locations;\n}\n/*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n\nfunction parseDirectiveLocation(lexer) {\n var start = lexer.token;\n var name = parseName(lexer);\n\n if (DirectiveLocation.hasOwnProperty(name.value)) {\n return name;\n }\n\n throw unexpected(lexer, start);\n} // Core parsing utility functions\n\n/**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n\n\nfunction loc(lexer, startToken) {\n if (!lexer.options.noLocation) {\n return new Loc(startToken, lexer.lastToken, lexer.source);\n }\n}\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nLoc.prototype.toJSON = Loc.prototype.inspect = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n};\n/**\n * Determines if the next token is of a given kind\n */\n\n\nfunction peek(lexer, kind) {\n return lexer.token.kind === kind;\n}\n/**\n * If the next token is of the given kind, return true after advancing\n * the lexer. Otherwise, do not change the parser state and return false.\n */\n\n\nfunction skip(lexer, kind) {\n var match = lexer.token.kind === kind;\n\n if (match) {\n lexer.advance();\n }\n\n return match;\n}\n/**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n\n\nfunction expect(lexer, kind) {\n var token = lexer.token;\n\n if (token.kind === kind) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n}\n/**\n * If the next token is a keyword with the given value, return that token after\n * advancing the lexer. Otherwise, do not change the parser state and return\n * false.\n */\n\n\nfunction expectKeyword(lexer, value) {\n var token = lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n}\n/**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n\n\nfunction unexpected(lexer, atToken) {\n var token = atToken || lexer.token;\n return syntaxError(lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n}\n/**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction any(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}\n/**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction many(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [parseFn(lexer)];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __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};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { GraphQLError } from 'graphql/error/GraphQLError';\nimport { print } from 'graphql/language/printer';\nimport { parse } from 'graphql/language/parser';\nimport Amplify, { ConsoleLogger as Logger, Credentials, Constants, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER, } from '@aws-amplify/core';\nimport PubSub from '@aws-amplify/pubsub';\nimport Auth from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { RestClient } from '@aws-amplify/api-rest';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('GraphQLAPI');\nexport var graphqlOperation = function (query, variables) {\n if (variables === void 0) { variables = {}; }\n return ({\n query: query,\n variables: variables,\n });\n};\n/**\n * Export Cloud Logic APIs\n */\nvar GraphQLAPIClass = /** @class */ (function () {\n /**\n * Initialize GraphQL API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function GraphQLAPIClass(options) {\n this._api = null;\n this._options = options;\n Amplify.register(this);\n logger.debug('API Options', this._options);\n }\n GraphQLAPIClass.prototype.getModuleName = function () {\n return 'GraphQLAPI';\n };\n /**\n * Configure API\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n GraphQLAPIClass.prototype.configure = function (options) {\n var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n var opt = __assign(__assign({}, otherOptions), API);\n logger.debug('configure GraphQL API', { opt: opt });\n if (opt['aws_project_region']) {\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {},\n });\n }\n if (typeof opt.graphql_headers !== 'undefined' &&\n typeof opt.graphql_headers !== 'function') {\n logger.warn('graphql_headers should be a function');\n opt.graphql_headers = undefined;\n }\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n GraphQLAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest instance');\n if (this._options) {\n this._api = new RestClient(this._options);\n return true;\n }\n else {\n return Promise.reject('API not configured');\n }\n };\n GraphQLAPIClass.prototype._headerBasedAuth = function (defaultAuthenticationType) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, federatedInfo, session;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = this._options, aws_appsync_authenticationType = _a.aws_appsync_authenticationType, apiKey = _a.aws_appsync_apiKey;\n authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n headers = {};\n _b = authenticationType;\n switch (_b) {\n case 'API_KEY': return [3 /*break*/, 1];\n case 'AWS_IAM': return [3 /*break*/, 2];\n case 'OPENID_CONNECT': return [3 /*break*/, 4];\n case 'AMAZON_COGNITO_USER_POOLS': return [3 /*break*/, 6];\n }\n return [3 /*break*/, 8];\n case 1:\n if (!apiKey) {\n throw new Error('No api-key configured');\n }\n headers = {\n Authorization: null,\n 'X-Api-Key': apiKey,\n };\n return [3 /*break*/, 9];\n case 2: return [4 /*yield*/, this._ensureCredentials()];\n case 3:\n credentialsOK = _c.sent();\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n return [3 /*break*/, 9];\n case 4: return [4 /*yield*/, Cache.getItem('federatedInfo')];\n case 5:\n federatedInfo = _c.sent();\n if (!federatedInfo || !federatedInfo.token) {\n throw new Error('No federated jwt');\n }\n headers = {\n Authorization: federatedInfo.token,\n };\n return [3 /*break*/, 9];\n case 6: return [4 /*yield*/, Auth.currentSession()];\n case 7:\n session = _c.sent();\n headers = {\n Authorization: session.getAccessToken().getJwtToken(),\n };\n return [3 /*break*/, 9];\n case 8:\n headers = {\n Authorization: null,\n };\n return [3 /*break*/, 9];\n case 9: return [2 /*return*/, headers];\n }\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n GraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n var _a = __read(doc.definitions, 1), operationType = _a[0].operation;\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n GraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders) {\n var paramQuery = _a.query, _b = _a.variables, variables = _b === void 0 ? {} : _b, authMode = _a.authMode;\n var query = typeof paramQuery === 'string'\n ? parse(paramQuery)\n : parse(print(paramQuery));\n var _c = __read(query.definitions.filter(function (def) { return def.kind === 'OperationDefinition'; }), 1), _d = _c[0], operationDef = _d === void 0 ? {} : _d;\n var operationType = operationDef.operation;\n switch (operationType) {\n case 'query':\n case 'mutation':\n return this._graphql({ query: query, variables: variables, authMode: authMode }, additionalHeaders);\n case 'subscription':\n return this._graphqlSubscribe({ query: query, variables: variables, authMode: authMode });\n }\n throw new Error(\"invalid operation type: \" + operationType);\n };\n GraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders) {\n var query = _a.query, variables = _a.variables, authMode = _a.authMode;\n if (additionalHeaders === void 0) { additionalHeaders = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _b, region, appSyncGraphqlEndpoint, _c, graphql_headers, customGraphqlEndpoint, customEndpointRegion, headers, _d, _e, _f, _g, _h, _j, body, init, endpoint, error, response, err_1, errors;\n var _k;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 2];\n return [4 /*yield*/, this.createInstance()];\n case 1:\n _l.sent();\n _l.label = 2;\n case 2:\n _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () { return ({}); } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n _d = [{}];\n _e = !customGraphqlEndpoint;\n if (!_e) return [3 /*break*/, 4];\n return [4 /*yield*/, this._headerBasedAuth(authMode)];\n case 3:\n _e = (_l.sent());\n _l.label = 4;\n case 4:\n _f = [__assign.apply(void 0, _d.concat([(_e)]))];\n _g = customGraphqlEndpoint;\n if (!_g) return [3 /*break*/, 8];\n if (!customEndpointRegion) return [3 /*break*/, 6];\n return [4 /*yield*/, this._headerBasedAuth(authMode)];\n case 5:\n _h = _l.sent();\n return [3 /*break*/, 7];\n case 6:\n _h = { Authorization: null };\n _l.label = 7;\n case 7:\n _g = (_h);\n _l.label = 8;\n case 8:\n _j = [__assign.apply(void 0, _f.concat([(_g)]))];\n return [4 /*yield*/, graphql_headers({ query: query, variables: variables })];\n case 9:\n headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), additionalHeaders]), (!customGraphqlEndpoint && (_k = {},\n _k[USER_AGENT_HEADER] = Constants.userAgent,\n _k))]);\n body = {\n query: print(query),\n variables: variables,\n };\n init = {\n headers: headers,\n body: body,\n signerServiceInfo: {\n service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n region: !customGraphqlEndpoint ? region : customEndpointRegion,\n },\n };\n endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n if (!endpoint) {\n error = new GraphQLError('No graphql endpoint provided.');\n throw {\n data: {},\n errors: [error],\n };\n }\n _l.label = 10;\n case 10:\n _l.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this._api.post(endpoint, init)];\n case 11:\n response = _l.sent();\n return [3 /*break*/, 13];\n case 12:\n err_1 = _l.sent();\n response = {\n data: {},\n errors: [new GraphQLError(err_1.message)],\n };\n return [3 /*break*/, 13];\n case 13:\n errors = response.errors;\n if (errors && errors.length) {\n throw response;\n }\n return [2 /*return*/, response];\n }\n });\n });\n };\n GraphQLAPIClass.prototype._graphqlSubscribe = function (_a) {\n var query = _a.query, variables = _a.variables, defaultAuthenticationType = _a.authMode;\n var _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, aws_appsync_authenticationType = _b.aws_appsync_authenticationType, apiKey = _b.aws_appsync_apiKey, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () { return ({}); } : _c;\n var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n if (PubSub && typeof PubSub.subscribe === 'function') {\n return PubSub.subscribe('', {\n provider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n apiKey: apiKey,\n query: print(query),\n region: region,\n variables: variables,\n graphql_headers: graphql_headers,\n });\n }\n else {\n logger.debug('No pubsub module applied for subscription');\n throw new Error('No pubsub module applied for subscription');\n }\n };\n /**\n * @private\n */\n GraphQLAPIClass.prototype._ensureCredentials = function () {\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for api', cred);\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n return GraphQLAPIClass;\n}());\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);\n//# sourceMappingURL=GraphQLAPI.js.map","/**\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","/**\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\nvar insertParams = function insertParams(path, params) {\n var segments = segmentize(path);\n return \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname, query) {\n return pathname + (query ? \"?\" + query : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", { baseuri: \"/\", basepath: \"/\" });\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n { value: { baseuri: uri, basepath: basepath } },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch };","/*\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","var characterMap = {\r\n\t\"À\": \"A\",\r\n\t\"Á\": \"A\",\r\n\t\"Â\": \"A\",\r\n\t\"Ã\": \"A\",\r\n\t\"Ä\": \"A\",\r\n\t\"Å\": \"A\",\r\n\t\"Ấ\": \"A\",\r\n\t\"Ắ\": \"A\",\r\n\t\"Ẳ\": \"A\",\r\n\t\"Ẵ\": \"A\",\r\n\t\"Ặ\": \"A\",\r\n\t\"Æ\": \"AE\",\r\n\t\"Ầ\": \"A\",\r\n\t\"Ằ\": \"A\",\r\n\t\"Ȃ\": \"A\",\r\n\t\"Ç\": \"C\",\r\n\t\"Ḉ\": \"C\",\r\n\t\"È\": \"E\",\r\n\t\"É\": \"E\",\r\n\t\"Ê\": \"E\",\r\n\t\"Ë\": \"E\",\r\n\t\"Ế\": \"E\",\r\n\t\"Ḗ\": \"E\",\r\n\t\"Ề\": \"E\",\r\n\t\"Ḕ\": \"E\",\r\n\t\"Ḝ\": \"E\",\r\n\t\"Ȇ\": \"E\",\r\n\t\"Ì\": \"I\",\r\n\t\"Í\": \"I\",\r\n\t\"Î\": \"I\",\r\n\t\"Ï\": \"I\",\r\n\t\"Ḯ\": \"I\",\r\n\t\"Ȋ\": \"I\",\r\n\t\"Ð\": \"D\",\r\n\t\"Ñ\": \"N\",\r\n\t\"Ò\": \"O\",\r\n\t\"Ó\": \"O\",\r\n\t\"Ô\": \"O\",\r\n\t\"Õ\": \"O\",\r\n\t\"Ö\": \"O\",\r\n\t\"Ø\": \"O\",\r\n\t\"Ố\": \"O\",\r\n\t\"Ṍ\": \"O\",\r\n\t\"Ṓ\": \"O\",\r\n\t\"Ȏ\": \"O\",\r\n\t\"Ù\": \"U\",\r\n\t\"Ú\": \"U\",\r\n\t\"Û\": \"U\",\r\n\t\"Ü\": \"U\",\r\n\t\"Ý\": \"Y\",\r\n\t\"à\": \"a\",\r\n\t\"á\": \"a\",\r\n\t\"â\": \"a\",\r\n\t\"ã\": \"a\",\r\n\t\"ä\": \"a\",\r\n\t\"å\": \"a\",\r\n\t\"ấ\": \"a\",\r\n\t\"ắ\": \"a\",\r\n\t\"ẳ\": \"a\",\r\n\t\"ẵ\": \"a\",\r\n\t\"ặ\": \"a\",\r\n\t\"æ\": \"ae\",\r\n\t\"ầ\": \"a\",\r\n\t\"ằ\": \"a\",\r\n\t\"ȃ\": \"a\",\r\n\t\"ç\": \"c\",\r\n\t\"ḉ\": \"c\",\r\n\t\"è\": \"e\",\r\n\t\"é\": \"e\",\r\n\t\"ê\": \"e\",\r\n\t\"ë\": \"e\",\r\n\t\"ế\": \"e\",\r\n\t\"ḗ\": \"e\",\r\n\t\"ề\": \"e\",\r\n\t\"ḕ\": \"e\",\r\n\t\"ḝ\": \"e\",\r\n\t\"ȇ\": \"e\",\r\n\t\"ì\": \"i\",\r\n\t\"í\": \"i\",\r\n\t\"î\": \"i\",\r\n\t\"ï\": \"i\",\r\n\t\"ḯ\": \"i\",\r\n\t\"ȋ\": \"i\",\r\n\t\"ð\": \"d\",\r\n\t\"ñ\": \"n\",\r\n\t\"ò\": \"o\",\r\n\t\"ó\": \"o\",\r\n\t\"ô\": \"o\",\r\n\t\"õ\": \"o\",\r\n\t\"ö\": \"o\",\r\n\t\"ø\": \"o\",\r\n\t\"ố\": \"o\",\r\n\t\"ṍ\": \"o\",\r\n\t\"ṓ\": \"o\",\r\n\t\"ȏ\": \"o\",\r\n\t\"ù\": \"u\",\r\n\t\"ú\": \"u\",\r\n\t\"û\": \"u\",\r\n\t\"ü\": \"u\",\r\n\t\"ý\": \"y\",\r\n\t\"ÿ\": \"y\",\r\n\t\"Ā\": \"A\",\r\n\t\"ā\": \"a\",\r\n\t\"Ă\": \"A\",\r\n\t\"ă\": \"a\",\r\n\t\"Ą\": \"A\",\r\n\t\"ą\": \"a\",\r\n\t\"Ć\": \"C\",\r\n\t\"ć\": \"c\",\r\n\t\"Ĉ\": \"C\",\r\n\t\"ĉ\": \"c\",\r\n\t\"Ċ\": \"C\",\r\n\t\"ċ\": \"c\",\r\n\t\"Č\": \"C\",\r\n\t\"č\": \"c\",\r\n\t\"C̆\": \"C\",\r\n\t\"c̆\": \"c\",\r\n\t\"Ď\": \"D\",\r\n\t\"ď\": \"d\",\r\n\t\"Đ\": \"D\",\r\n\t\"đ\": \"d\",\r\n\t\"Ē\": \"E\",\r\n\t\"ē\": \"e\",\r\n\t\"Ĕ\": \"E\",\r\n\t\"ĕ\": \"e\",\r\n\t\"Ė\": \"E\",\r\n\t\"ė\": \"e\",\r\n\t\"Ę\": \"E\",\r\n\t\"ę\": \"e\",\r\n\t\"Ě\": \"E\",\r\n\t\"ě\": \"e\",\r\n\t\"Ĝ\": \"G\",\r\n\t\"Ǵ\": \"G\",\r\n\t\"ĝ\": \"g\",\r\n\t\"ǵ\": \"g\",\r\n\t\"Ğ\": \"G\",\r\n\t\"ğ\": \"g\",\r\n\t\"Ġ\": \"G\",\r\n\t\"ġ\": \"g\",\r\n\t\"Ģ\": \"G\",\r\n\t\"ģ\": \"g\",\r\n\t\"Ĥ\": \"H\",\r\n\t\"ĥ\": \"h\",\r\n\t\"Ħ\": \"H\",\r\n\t\"ħ\": \"h\",\r\n\t\"Ḫ\": \"H\",\r\n\t\"ḫ\": \"h\",\r\n\t\"Ĩ\": \"I\",\r\n\t\"ĩ\": \"i\",\r\n\t\"Ī\": \"I\",\r\n\t\"ī\": \"i\",\r\n\t\"Ĭ\": \"I\",\r\n\t\"ĭ\": \"i\",\r\n\t\"Į\": \"I\",\r\n\t\"į\": \"i\",\r\n\t\"İ\": \"I\",\r\n\t\"ı\": \"i\",\r\n\t\"IJ\": \"IJ\",\r\n\t\"ij\": \"ij\",\r\n\t\"Ĵ\": \"J\",\r\n\t\"ĵ\": \"j\",\r\n\t\"Ķ\": \"K\",\r\n\t\"ķ\": \"k\",\r\n\t\"Ḱ\": \"K\",\r\n\t\"ḱ\": \"k\",\r\n\t\"K̆\": \"K\",\r\n\t\"k̆\": \"k\",\r\n\t\"Ĺ\": \"L\",\r\n\t\"ĺ\": \"l\",\r\n\t\"Ļ\": \"L\",\r\n\t\"ļ\": \"l\",\r\n\t\"Ľ\": \"L\",\r\n\t\"ľ\": \"l\",\r\n\t\"Ŀ\": \"L\",\r\n\t\"ŀ\": \"l\",\r\n\t\"Ł\": \"l\",\r\n\t\"ł\": \"l\",\r\n\t\"Ḿ\": \"M\",\r\n\t\"ḿ\": \"m\",\r\n\t\"M̆\": \"M\",\r\n\t\"m̆\": \"m\",\r\n\t\"Ń\": \"N\",\r\n\t\"ń\": \"n\",\r\n\t\"Ņ\": \"N\",\r\n\t\"ņ\": \"n\",\r\n\t\"Ň\": \"N\",\r\n\t\"ň\": \"n\",\r\n\t\"ʼn\": \"n\",\r\n\t\"N̆\": \"N\",\r\n\t\"n̆\": \"n\",\r\n\t\"Ō\": \"O\",\r\n\t\"ō\": \"o\",\r\n\t\"Ŏ\": \"O\",\r\n\t\"ŏ\": \"o\",\r\n\t\"Ő\": \"O\",\r\n\t\"ő\": \"o\",\r\n\t\"Œ\": \"OE\",\r\n\t\"œ\": \"oe\",\r\n\t\"P̆\": \"P\",\r\n\t\"p̆\": \"p\",\r\n\t\"Ŕ\": \"R\",\r\n\t\"ŕ\": \"r\",\r\n\t\"Ŗ\": \"R\",\r\n\t\"ŗ\": \"r\",\r\n\t\"Ř\": \"R\",\r\n\t\"ř\": \"r\",\r\n\t\"R̆\": \"R\",\r\n\t\"r̆\": \"r\",\r\n\t\"Ȓ\": \"R\",\r\n\t\"ȓ\": \"r\",\r\n\t\"Ś\": \"S\",\r\n\t\"ś\": \"s\",\r\n\t\"Ŝ\": \"S\",\r\n\t\"ŝ\": \"s\",\r\n\t\"Ş\": \"S\",\r\n\t\"Ș\": \"S\",\r\n\t\"ș\": \"s\",\r\n\t\"ş\": \"s\",\r\n\t\"Š\": \"S\",\r\n\t\"š\": \"s\",\r\n\t\"Ţ\": \"T\",\r\n\t\"ţ\": \"t\",\r\n\t\"ț\": \"t\",\r\n\t\"Ț\": \"T\",\r\n\t\"Ť\": \"T\",\r\n\t\"ť\": \"t\",\r\n\t\"Ŧ\": \"T\",\r\n\t\"ŧ\": \"t\",\r\n\t\"T̆\": \"T\",\r\n\t\"t̆\": \"t\",\r\n\t\"Ũ\": \"U\",\r\n\t\"ũ\": \"u\",\r\n\t\"Ū\": \"U\",\r\n\t\"ū\": \"u\",\r\n\t\"Ŭ\": \"U\",\r\n\t\"ŭ\": \"u\",\r\n\t\"Ů\": \"U\",\r\n\t\"ů\": \"u\",\r\n\t\"Ű\": \"U\",\r\n\t\"ű\": \"u\",\r\n\t\"Ų\": \"U\",\r\n\t\"ų\": \"u\",\r\n\t\"Ȗ\": \"U\",\r\n\t\"ȗ\": \"u\",\r\n\t\"V̆\": \"V\",\r\n\t\"v̆\": \"v\",\r\n\t\"Ŵ\": \"W\",\r\n\t\"ŵ\": \"w\",\r\n\t\"Ẃ\": \"W\",\r\n\t\"ẃ\": \"w\",\r\n\t\"X̆\": \"X\",\r\n\t\"x̆\": \"x\",\r\n\t\"Ŷ\": \"Y\",\r\n\t\"ŷ\": \"y\",\r\n\t\"Ÿ\": \"Y\",\r\n\t\"Y̆\": \"Y\",\r\n\t\"y̆\": \"y\",\r\n\t\"Ź\": \"Z\",\r\n\t\"ź\": \"z\",\r\n\t\"Ż\": \"Z\",\r\n\t\"ż\": \"z\",\r\n\t\"Ž\": \"Z\",\r\n\t\"ž\": \"z\",\r\n\t\"ſ\": \"s\",\r\n\t\"ƒ\": \"f\",\r\n\t\"Ơ\": \"O\",\r\n\t\"ơ\": \"o\",\r\n\t\"Ư\": \"U\",\r\n\t\"ư\": \"u\",\r\n\t\"Ǎ\": \"A\",\r\n\t\"ǎ\": \"a\",\r\n\t\"Ǐ\": \"I\",\r\n\t\"ǐ\": \"i\",\r\n\t\"Ǒ\": \"O\",\r\n\t\"ǒ\": \"o\",\r\n\t\"Ǔ\": \"U\",\r\n\t\"ǔ\": \"u\",\r\n\t\"Ǖ\": \"U\",\r\n\t\"ǖ\": \"u\",\r\n\t\"Ǘ\": \"U\",\r\n\t\"ǘ\": \"u\",\r\n\t\"Ǚ\": \"U\",\r\n\t\"ǚ\": \"u\",\r\n\t\"Ǜ\": \"U\",\r\n\t\"ǜ\": \"u\",\r\n\t\"Ứ\": \"U\",\r\n\t\"ứ\": \"u\",\r\n\t\"Ṹ\": \"U\",\r\n\t\"ṹ\": \"u\",\r\n\t\"Ǻ\": \"A\",\r\n\t\"ǻ\": \"a\",\r\n\t\"Ǽ\": \"AE\",\r\n\t\"ǽ\": \"ae\",\r\n\t\"Ǿ\": \"O\",\r\n\t\"ǿ\": \"o\",\r\n\t\"Þ\": \"TH\",\r\n\t\"þ\": \"th\",\r\n\t\"Ṕ\": \"P\",\r\n\t\"ṕ\": \"p\",\r\n\t\"Ṥ\": \"S\",\r\n\t\"ṥ\": \"s\",\r\n\t\"X́\": \"X\",\r\n\t\"x́\": \"x\",\r\n\t\"Ѓ\": \"Г\",\r\n\t\"ѓ\": \"г\",\r\n\t\"Ќ\": \"К\",\r\n\t\"ќ\": \"к\",\r\n\t\"A̋\": \"A\",\r\n\t\"a̋\": \"a\",\r\n\t\"E̋\": \"E\",\r\n\t\"e̋\": \"e\",\r\n\t\"I̋\": \"I\",\r\n\t\"i̋\": \"i\",\r\n\t\"Ǹ\": \"N\",\r\n\t\"ǹ\": \"n\",\r\n\t\"Ồ\": \"O\",\r\n\t\"ồ\": \"o\",\r\n\t\"Ṑ\": \"O\",\r\n\t\"ṑ\": \"o\",\r\n\t\"Ừ\": \"U\",\r\n\t\"ừ\": \"u\",\r\n\t\"Ẁ\": \"W\",\r\n\t\"ẁ\": \"w\",\r\n\t\"Ỳ\": \"Y\",\r\n\t\"ỳ\": \"y\",\r\n\t\"Ȁ\": \"A\",\r\n\t\"ȁ\": \"a\",\r\n\t\"Ȅ\": \"E\",\r\n\t\"ȅ\": \"e\",\r\n\t\"Ȉ\": \"I\",\r\n\t\"ȉ\": \"i\",\r\n\t\"Ȍ\": \"O\",\r\n\t\"ȍ\": \"o\",\r\n\t\"Ȑ\": \"R\",\r\n\t\"ȑ\": \"r\",\r\n\t\"Ȕ\": \"U\",\r\n\t\"ȕ\": \"u\",\r\n\t\"B̌\": \"B\",\r\n\t\"b̌\": \"b\",\r\n\t\"Č̣\": \"C\",\r\n\t\"č̣\": \"c\",\r\n\t\"Ê̌\": \"E\",\r\n\t\"ê̌\": \"e\",\r\n\t\"F̌\": \"F\",\r\n\t\"f̌\": \"f\",\r\n\t\"Ǧ\": \"G\",\r\n\t\"ǧ\": \"g\",\r\n\t\"Ȟ\": \"H\",\r\n\t\"ȟ\": \"h\",\r\n\t\"J̌\": \"J\",\r\n\t\"ǰ\": \"j\",\r\n\t\"Ǩ\": \"K\",\r\n\t\"ǩ\": \"k\",\r\n\t\"M̌\": \"M\",\r\n\t\"m̌\": \"m\",\r\n\t\"P̌\": \"P\",\r\n\t\"p̌\": \"p\",\r\n\t\"Q̌\": \"Q\",\r\n\t\"q̌\": \"q\",\r\n\t\"Ř̩\": \"R\",\r\n\t\"ř̩\": \"r\",\r\n\t\"Ṧ\": \"S\",\r\n\t\"ṧ\": \"s\",\r\n\t\"V̌\": \"V\",\r\n\t\"v̌\": \"v\",\r\n\t\"W̌\": \"W\",\r\n\t\"w̌\": \"w\",\r\n\t\"X̌\": \"X\",\r\n\t\"x̌\": \"x\",\r\n\t\"Y̌\": \"Y\",\r\n\t\"y̌\": \"y\",\r\n\t\"A̧\": \"A\",\r\n\t\"a̧\": \"a\",\r\n\t\"B̧\": \"B\",\r\n\t\"b̧\": \"b\",\r\n\t\"Ḑ\": \"D\",\r\n\t\"ḑ\": \"d\",\r\n\t\"Ȩ\": \"E\",\r\n\t\"ȩ\": \"e\",\r\n\t\"Ɛ̧\": \"E\",\r\n\t\"ɛ̧\": \"e\",\r\n\t\"Ḩ\": \"H\",\r\n\t\"ḩ\": \"h\",\r\n\t\"I̧\": \"I\",\r\n\t\"i̧\": \"i\",\r\n\t\"Ɨ̧\": \"I\",\r\n\t\"ɨ̧\": \"i\",\r\n\t\"M̧\": \"M\",\r\n\t\"m̧\": \"m\",\r\n\t\"O̧\": \"O\",\r\n\t\"o̧\": \"o\",\r\n\t\"Q̧\": \"Q\",\r\n\t\"q̧\": \"q\",\r\n\t\"U̧\": \"U\",\r\n\t\"u̧\": \"u\",\r\n\t\"X̧\": \"X\",\r\n\t\"x̧\": \"x\",\r\n\t\"Z̧\": \"Z\",\r\n\t\"z̧\": \"z\",\r\n};\r\n\r\nvar chars = Object.keys(characterMap).join('|');\r\nvar allAccents = new RegExp(chars, 'g');\r\nvar firstAccent = new RegExp(chars, '');\r\n\r\nvar removeAccents = function(string) {\t\r\n\treturn string.replace(allAccents, function(match) {\r\n\t\treturn characterMap[match];\r\n\t});\r\n};\r\n\r\nvar hasAccents = function(string) {\r\n\treturn !!string.match(firstAccent);\r\n};\r\n\r\nmodule.exports = removeAccents;\r\nmodule.exports.has = hasAccents;\r\nmodule.exports.remove = removeAccents;\r\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\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","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nimport { ConsoleLogger as Logger } from './Logger';\nvar logger = new Logger('Hub');\nvar AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' &&\n typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nfunction isLegacyCallback(callback) {\n return callback.onHubCapsule !== undefined;\n}\nvar HubClass = /** @class */ (function () {\n function HubClass(name) {\n this.listeners = [];\n this.patterns = [];\n this.protectedChannels = [\n 'core',\n 'auth',\n 'api',\n 'analytics',\n 'interactions',\n 'pubsub',\n 'storage',\n 'xr',\n ];\n this.name = name;\n }\n // Note - Need to pass channel as a reference for removal to work and not anonymous function\n HubClass.prototype.remove = function (channel, listener) {\n if (channel instanceof RegExp) {\n var pattern_1 = this.patterns.find(function (_a) {\n var pattern = _a.pattern;\n return pattern.source === channel.source;\n });\n if (!pattern_1) {\n logger.warn(\"No listeners for \" + channel);\n return;\n }\n this.patterns = __spread(this.patterns.filter(function (x) { return x !== pattern_1; }));\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n logger.warn(\"No listeners for \" + channel);\n return;\n }\n this.listeners[channel] = __spread(holder.filter(function (_a) {\n var callback = _a.callback;\n return callback !== listener;\n }));\n }\n };\n HubClass.prototype.dispatch = function (channel, payload, source, ampSymbol) {\n if (source === void 0) { source = ''; }\n if (this.protectedChannels.indexOf(channel) > -1) {\n var hasAccess = ampSymbol === AMPLIFY_SYMBOL;\n if (!hasAccess) {\n logger.warn(\"WARNING: \" + channel + \" is protected and dispatching on it can have unintended consequences\");\n }\n }\n var capsule = {\n channel: channel,\n payload: __assign({}, payload),\n source: source,\n patternInfo: [],\n };\n try {\n this._toListeners(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n };\n HubClass.prototype.listen = function (channel, callback, listenerName) {\n if (listenerName === void 0) { listenerName = 'noname'; }\n var cb;\n // Check for legacy onHubCapsule callback for backwards compatability\n if (isLegacyCallback(callback)) {\n logger.warn(\"WARNING onHubCapsule is Deprecated. Please pass in a callback.\");\n cb = callback.onHubCapsule.bind(callback);\n }\n else if (typeof callback !== 'function') {\n throw new Error('No callback supplied to Hub');\n }\n else {\n cb = callback;\n }\n if (channel instanceof RegExp) {\n this.patterns.push({\n pattern: channel,\n callback: cb,\n });\n }\n else {\n var holder = this.listeners[channel];\n if (!holder) {\n holder = [];\n this.listeners[channel] = holder;\n }\n holder.push({\n name: listenerName,\n callback: cb,\n });\n }\n };\n HubClass.prototype._toListeners = function (capsule) {\n var channel = capsule.channel, payload = capsule.payload;\n var holder = this.listeners[channel];\n if (holder) {\n holder.forEach(function (listener) {\n logger.debug(\"Dispatching to \" + channel + \" with \", payload);\n try {\n listener.callback(capsule);\n }\n catch (e) {\n logger.error(e);\n }\n });\n }\n if (this.patterns.length > 0) {\n if (!payload.message) {\n logger.warn(\"Cannot perform pattern matching without a message key\");\n return;\n }\n var payloadStr_1 = payload.message;\n this.patterns.forEach(function (pattern) {\n var match = payloadStr_1.match(pattern.pattern);\n if (match) {\n var _a = __read(match), groups = _a.slice(1);\n var dispatchingCapsule = __assign(__assign({}, capsule), { patternInfo: groups });\n try {\n pattern.callback(dispatchingCapsule);\n }\n catch (e) {\n logger.error(e);\n }\n }\n });\n }\n };\n return HubClass;\n}());\nexport { HubClass };\n/*We export a __default__ instance of HubClass to use it as a\npsuedo Singleton for the main messaging bus, however you can still create\nyour own instance of HubClass() for a separate \"private bus\" of events.*/\nexport var Hub = new HubClass('__default__');\n/**\n * @deprecated use named import\n */\nexport default Hub;\n//# sourceMappingURL=Hub.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 * Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { browserOrNode } from '../JS';\nimport { Amplify } from '../Amplify';\n/**\n * Provides a means to registering a service worker in the browser\n * and communicating with it via postMessage events.\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/\n *\n * postMessage events are currently not supported in all browsers. See:\n * https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API\n *\n * At the minmum this class will register the service worker and listen\n * and attempt to dispatch messages on state change and record analytics\n * events based on the service worker lifecycle.\n */\nvar ServiceWorkerClass = /** @class */ (function () {\n function ServiceWorkerClass() {\n // The AWS Amplify logger\n this._logger = new Logger('ServiceWorker');\n }\n Object.defineProperty(ServiceWorkerClass.prototype, \"serviceWorker\", {\n /**\n * Get the currently active service worker\n */\n get: function () {\n return this._serviceWorker;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Register the service-worker.js file in the browser\n * Make sure the service-worker.js is part of the build\n * for example with Angular, modify the angular-cli.json file\n * and add to \"assets\" array \"service-worker.js\"\n * @param {string} - (optional) Service worker file. Defaults to \"/service-worker.js\"\n * @param {string} - (optional) The service worker scope. Defaults to \"/\"\n * - API Doc: https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/register\n * @returns {Promise}\n *\t- resolve(ServiceWorkerRegistration)\n *\t- reject(Error)\n **/\n ServiceWorkerClass.prototype.register = function (filePath, scope) {\n var _this = this;\n if (filePath === void 0) { filePath = '/service-worker.js'; }\n if (scope === void 0) { scope = '/'; }\n this._logger.debug(\"registering \" + filePath);\n this._logger.debug(\"registering service worker with scope \" + scope);\n return new Promise(function (resolve, reject) {\n if (navigator && 'serviceWorker' in navigator) {\n navigator.serviceWorker\n .register(filePath, {\n scope: scope,\n })\n .then(function (registration) {\n if (registration.installing) {\n _this._serviceWorker = registration.installing;\n }\n else if (registration.waiting) {\n _this._serviceWorker = registration.waiting;\n }\n else if (registration.active) {\n _this._serviceWorker = registration.active;\n }\n _this._registration = registration;\n _this._setupListeners();\n _this._logger.debug(\"Service Worker Registration Success: \" + registration);\n return resolve(registration);\n })\n .catch(function (error) {\n _this._logger.debug(\"Service Worker Registration Failed \" + error);\n return reject(error);\n });\n }\n else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Enable web push notifications. If not subscribed, a new subscription will\n * be created and registered.\n * \tTest Push Server: https://web-push-codelab.glitch.me/\n * \tPush Server Libraries: https://github.com/web-push-libs/\n * \tAPI Doc: https://developers.google.com/web/fundamentals/codelabs/push-notifications/\n * @param publicKey\n * @returns {Promise}\n * \t- resolve(PushSubscription)\n * - reject(Error)\n */\n ServiceWorkerClass.prototype.enablePush = function (publicKey) {\n var _this = this;\n if (!this._registration)\n throw new Error('Service Worker not registered');\n this._publicKey = publicKey;\n return new Promise(function (resolve, reject) {\n if (browserOrNode().isBrowser) {\n _this._registration.pushManager.getSubscription().then(function (subscription) {\n if (subscription) {\n _this._subscription = subscription;\n _this._logger.debug(\"User is subscribed to push: \" + JSON.stringify(subscription));\n resolve(subscription);\n }\n else {\n _this._logger.debug(\"User is NOT subscribed to push\");\n return _this._registration.pushManager\n .subscribe({\n userVisibleOnly: true,\n applicationServerKey: _this._urlB64ToUint8Array(publicKey),\n })\n .then(function (subscription) {\n _this._subscription = subscription;\n _this._logger.debug(\"User subscribed: \" + JSON.stringify(subscription));\n resolve(subscription);\n })\n .catch(function (error) {\n _this._logger.error(error);\n });\n }\n });\n }\n else {\n return reject(new Error('Service Worker not available'));\n }\n });\n };\n /**\n * Convert a base64 encoded string to a Uint8 array for the push server key\n * @param base64String\n */\n ServiceWorkerClass.prototype._urlB64ToUint8Array = function (base64String) {\n var padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n };\n /**\n * Send a message to the service worker. The service worker needs\n * to implement `self.addEventListener('message') to handle the\n * message. This ***currently*** does not work in Safari or IE.\n * @param {object | string} - An arbitrary JSON object or string message to send to the service worker\n *\t- see: https://developer.mozilla.org/en-US/docs/Web/API/Transferable\n * @returns {Promise}\n **/\n ServiceWorkerClass.prototype.send = function (message) {\n if (this._serviceWorker) {\n this._serviceWorker.postMessage(typeof message === 'object' ? JSON.stringify(message) : message);\n }\n };\n /**\n * Listen for service worker state change and message events\n * https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state\n **/\n ServiceWorkerClass.prototype._setupListeners = function () {\n var _this = this;\n this._serviceWorker.addEventListener('statechange', function (event) {\n var currentState = _this._serviceWorker.state;\n _this._logger.debug(\"ServiceWorker statechange: \" + currentState);\n if (Amplify.Analytics && typeof Amplify.Analytics.record === 'function') {\n Amplify.Analytics.record({\n name: 'ServiceWorker',\n attributes: {\n state: currentState,\n },\n });\n }\n });\n this._serviceWorker.addEventListener('message', function (event) {\n _this._logger.debug(\"ServiceWorker message event: \" + event);\n });\n };\n return ServiceWorkerClass;\n}());\nexport { ServiceWorkerClass };\n/**\n * @deprecated use named import\n */\nexport default ServiceWorkerClass;\n//# sourceMappingURL=ServiceWorker.js.map","import { __read } from \"tslib\";\n/**\n * @internal\n */\nexport function resolveLogins(logins) {\n return Promise.all(Object.keys(logins).reduce(function (arr, name) {\n var tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n }\n else {\n arr.push(tokenOrProvider().then(function (token) { return [name, token]; }));\n }\n return arr;\n }, [])).then(function (resolvedPairs) {\n return resolvedPairs.reduce(function (logins, _a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n logins[key] = value;\n return logins;\n }, {});\n });\n}\n//# sourceMappingURL=resolveLogins.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { HttpRequest as __HttpRequest } from \"@aws-sdk/protocol-http\";\nexport function serializeAws_json1_1CreateIdentityPoolCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.CreateIdentityPool\";\n body = JSON.stringify(serializeAws_json1_1CreateIdentityPoolInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1DeleteIdentitiesCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.DeleteIdentities\";\n body = JSON.stringify(serializeAws_json1_1DeleteIdentitiesInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1DeleteIdentityPoolCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.DeleteIdentityPool\";\n body = JSON.stringify(serializeAws_json1_1DeleteIdentityPoolInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1DescribeIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.DescribeIdentity\";\n body = JSON.stringify(serializeAws_json1_1DescribeIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1DescribeIdentityPoolCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.DescribeIdentityPool\";\n body = JSON.stringify(serializeAws_json1_1DescribeIdentityPoolInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1GetCredentialsForIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] =\n \"AWSCognitoIdentityService.GetCredentialsForIdentity\";\n body = JSON.stringify(serializeAws_json1_1GetCredentialsForIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1GetIdCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.GetId\";\n body = JSON.stringify(serializeAws_json1_1GetIdInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1GetIdentityPoolRolesCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.GetIdentityPoolRoles\";\n body = JSON.stringify(serializeAws_json1_1GetIdentityPoolRolesInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1GetOpenIdTokenCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.GetOpenIdToken\";\n body = JSON.stringify(serializeAws_json1_1GetOpenIdTokenInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] =\n \"AWSCognitoIdentityService.GetOpenIdTokenForDeveloperIdentity\";\n body = JSON.stringify(serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1ListIdentitiesCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.ListIdentities\";\n body = JSON.stringify(serializeAws_json1_1ListIdentitiesInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1ListIdentityPoolsCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.ListIdentityPools\";\n body = JSON.stringify(serializeAws_json1_1ListIdentityPoolsInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1ListTagsForResourceCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.ListTagsForResource\";\n body = JSON.stringify(serializeAws_json1_1ListTagsForResourceInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1LookupDeveloperIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.LookupDeveloperIdentity\";\n body = JSON.stringify(serializeAws_json1_1LookupDeveloperIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1MergeDeveloperIdentitiesCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] =\n \"AWSCognitoIdentityService.MergeDeveloperIdentities\";\n body = JSON.stringify(serializeAws_json1_1MergeDeveloperIdentitiesInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1SetIdentityPoolRolesCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.SetIdentityPoolRoles\";\n body = JSON.stringify(serializeAws_json1_1SetIdentityPoolRolesInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1TagResourceCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.TagResource\";\n body = JSON.stringify(serializeAws_json1_1TagResourceInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1UnlinkDeveloperIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.UnlinkDeveloperIdentity\";\n body = JSON.stringify(serializeAws_json1_1UnlinkDeveloperIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1UnlinkIdentityCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.UnlinkIdentity\";\n body = JSON.stringify(serializeAws_json1_1UnlinkIdentityInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1UntagResourceCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.UntagResource\";\n body = JSON.stringify(serializeAws_json1_1UntagResourceInput(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function serializeAws_json1_1UpdateIdentityPoolCommand(input, context) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body;\n return __generator(this, function (_a) {\n headers = {};\n headers[\"Content-Type\"] = \"application/x-amz-json-1.1\";\n headers[\"X-Amz-Target\"] = \"AWSCognitoIdentityService.UpdateIdentityPool\";\n body = JSON.stringify(serializeAws_json1_1IdentityPool(input, context));\n return [2 /*return*/, buildHttpRpcRequest(context, headers, \"/\", undefined, body)];\n });\n });\n}\nexport function deserializeAws_json1_1CreateIdentityPoolCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1CreateIdentityPoolCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"IdentityPool\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1CreateIdentityPoolCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, parsedBody, message;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _k.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"LimitExceededException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#LimitExceededException\": return [3 /*break*/, 6];\n case \"NotAuthorizedException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 8];\n case \"ResourceConflictException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 10];\n case \"TooManyRequestsException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 12];\n }\n return [3 /*break*/, 14];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 14:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _k.label = 15;\n case 15:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1DeleteIdentitiesCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1DeleteIdentitiesCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1DeleteIdentitiesResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"DeleteIdentitiesResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1DeleteIdentitiesCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, parsedBody, message;\n return __generator(this, function (_g) {\n switch (_g.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _g.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"TooManyRequestsException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 6];\n }\n return [3 /*break*/, 8];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_g.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 9];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_g.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 9];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_g.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 9];\n case 8:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _g.label = 9;\n case 9:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1DeleteIdentityPoolCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1DeleteIdentityPoolCommandError(output, context)];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n response = {\n $metadata: deserializeMetadata(output)\n };\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1DeleteIdentityPoolCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1DescribeIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1DescribeIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1IdentityDescription(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"IdentityDescription\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1DescribeIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1DescribeIdentityPoolCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1DescribeIdentityPoolCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"IdentityPool\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1DescribeIdentityPoolCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1GetCredentialsForIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1GetCredentialsForIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1GetCredentialsForIdentityResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"GetCredentialsForIdentityResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1GetCredentialsForIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, _l, parsedBody, message;\n return __generator(this, function (_m) {\n switch (_m.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _m.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ExternalServiceException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ExternalServiceException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidIdentityPoolConfigurationException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidIdentityPoolConfigurationException\": return [3 /*break*/, 6];\n case \"InvalidParameterException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 8];\n case \"NotAuthorizedException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 10];\n case \"ResourceConflictException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 12];\n case \"ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"TooManyRequestsException\": return [3 /*break*/, 16];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 16];\n }\n return [3 /*break*/, 18];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidIdentityPoolConfigurationExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 16:\n _l = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 17:\n response = __assign.apply(void 0, [__assign.apply(void 0, _l.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 18:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _m.label = 19;\n case 19:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1GetIdCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1GetIdCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1GetIdResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"GetIdResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1GetIdCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, _l, parsedBody, message;\n return __generator(this, function (_m) {\n switch (_m.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _m.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ExternalServiceException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ExternalServiceException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"LimitExceededException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#LimitExceededException\": return [3 /*break*/, 8];\n case \"NotAuthorizedException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 10];\n case \"ResourceConflictException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 12];\n case \"ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"TooManyRequestsException\": return [3 /*break*/, 16];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 16];\n }\n return [3 /*break*/, 18];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 16:\n _l = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 17:\n response = __assign.apply(void 0, [__assign.apply(void 0, _l.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 18:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _m.label = 19;\n case 19:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1GetIdentityPoolRolesCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1GetIdentityPoolRolesCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1GetIdentityPoolRolesResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"GetIdentityPoolRolesResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1GetIdentityPoolRolesCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, parsedBody, message;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _k.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceConflictException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 8];\n case \"ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"TooManyRequestsException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 12];\n }\n return [3 /*break*/, 14];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 14:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _k.label = 15;\n case 15:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1GetOpenIdTokenCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1GetOpenIdTokenCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1GetOpenIdTokenResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"GetOpenIdTokenResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1GetOpenIdTokenCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, parsedBody, message;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _l.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ExternalServiceException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ExternalServiceException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"NotAuthorizedException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 8];\n case \"ResourceConflictException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 10];\n case \"ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"TooManyRequestsException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 14];\n }\n return [3 /*break*/, 16];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 16:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _l.label = 17;\n case 17:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"GetOpenIdTokenForDeveloperIdentityResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, parsedBody, message;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _l.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"DeveloperUserAlreadyRegisteredException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#DeveloperUserAlreadyRegisteredException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"NotAuthorizedException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 8];\n case \"ResourceConflictException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 10];\n case \"ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"TooManyRequestsException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 14];\n }\n return [3 /*break*/, 16];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1DeveloperUserAlreadyRegisteredExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 16:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _l.label = 17;\n case 17:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1ListIdentitiesCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1ListIdentitiesCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1ListIdentitiesResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"ListIdentitiesResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1ListIdentitiesCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1ListIdentityPoolsCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1ListIdentityPoolsCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1ListIdentityPoolsResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"ListIdentityPoolsResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1ListIdentityPoolsCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1ListTagsForResourceCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1ListTagsForResourceCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1ListTagsForResourceResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"ListTagsForResourceResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1ListTagsForResourceCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1LookupDeveloperIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1LookupDeveloperIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1LookupDeveloperIdentityResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"LookupDeveloperIdentityResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1LookupDeveloperIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, parsedBody, message;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _k.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceConflictException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 8];\n case \"ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"TooManyRequestsException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 12];\n }\n return [3 /*break*/, 14];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 14:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _k.label = 15;\n case 15:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1MergeDeveloperIdentitiesCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1MergeDeveloperIdentitiesCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1MergeDeveloperIdentitiesResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"MergeDeveloperIdentitiesResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1MergeDeveloperIdentitiesCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, parsedBody, message;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _k.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceConflictException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 8];\n case \"ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"TooManyRequestsException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 12];\n }\n return [3 /*break*/, 14];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 14:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _k.label = 15;\n case 15:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1SetIdentityPoolRolesCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1SetIdentityPoolRolesCommandError(output, context)];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n response = {\n $metadata: deserializeMetadata(output)\n };\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1SetIdentityPoolRolesCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, parsedBody, message;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _l.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ConcurrentModificationException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ConcurrentModificationException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"NotAuthorizedException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 8];\n case \"ResourceConflictException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 10];\n case \"ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"TooManyRequestsException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 14];\n }\n return [3 /*break*/, 16];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ConcurrentModificationExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 16:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _l.label = 17;\n case 17:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1TagResourceCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1TagResourceCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1TagResourceResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"TagResourceResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1TagResourceCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1UnlinkDeveloperIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1UnlinkDeveloperIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n response = {\n $metadata: deserializeMetadata(output)\n };\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1UnlinkDeveloperIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, parsedBody, message;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _k.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceConflictException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 8];\n case \"ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 10];\n case \"TooManyRequestsException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 12];\n }\n return [3 /*break*/, 14];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_k.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 15];\n case 14:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _k.label = 15;\n case 15:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1UnlinkIdentityCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1UnlinkIdentityCommandError(output, context)];\n }\n return [4 /*yield*/, collectBody(output.body, context)];\n case 1:\n _a.sent();\n response = {\n $metadata: deserializeMetadata(output)\n };\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1UnlinkIdentityCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, parsedBody, message;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _l.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ExternalServiceException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ExternalServiceException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"NotAuthorizedException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 8];\n case \"ResourceConflictException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 10];\n case \"ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 12];\n case \"TooManyRequestsException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 14];\n }\n return [3 /*break*/, 16];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ExternalServiceExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_l.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 17];\n case 16:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _l.label = 17;\n case 17:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1UntagResourceCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1UntagResourceCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1UntagResourceResponse(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"UntagResourceResponse\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1UntagResourceCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, parsedBody, message;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _j.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"InternalErrorException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 2];\n case \"InvalidParameterException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 4];\n case \"NotAuthorizedException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 6];\n case \"ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 8];\n case \"TooManyRequestsException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 10];\n }\n return [3 /*break*/, 12];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_j.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 13];\n case 12:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _j.label = 13;\n case 13:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nexport function deserializeAws_json1_1UpdateIdentityPoolCommand(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var data, contents, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (output.statusCode >= 400) {\n return [2 /*return*/, deserializeAws_json1_1UpdateIdentityPoolCommandError(output, context)];\n }\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n data = _a.sent();\n contents = {};\n contents = deserializeAws_json1_1IdentityPool(data, context);\n response = __assign({ $metadata: deserializeMetadata(output), __type: \"IdentityPool\" }, contents);\n return [2 /*return*/, Promise.resolve(response)];\n }\n });\n });\n}\nfunction deserializeAws_json1_1UpdateIdentityPoolCommandError(output, context) {\n return __awaiter(this, void 0, void 0, function () {\n var parsedOutput, _a, _b, response, errorCode, errorTypeParts, _c, _d, _e, _f, _g, _h, _j, _k, _l, parsedBody, message;\n return __generator(this, function (_m) {\n switch (_m.label) {\n case 0:\n _a = [__assign({}, output)];\n _b = {};\n return [4 /*yield*/, parseBody(output.body, context)];\n case 1:\n parsedOutput = __assign.apply(void 0, _a.concat([(_b.body = _m.sent(), _b)]));\n errorCode = \"UnknownError\";\n errorTypeParts = parsedOutput.body[\"__type\"].split(\"#\");\n errorCode =\n errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1];\n _c = errorCode;\n switch (_c) {\n case \"ConcurrentModificationException\": return [3 /*break*/, 2];\n case \"com.amazonaws.cognito.identity.model#ConcurrentModificationException\": return [3 /*break*/, 2];\n case \"InternalErrorException\": return [3 /*break*/, 4];\n case \"com.amazonaws.cognito.identity.model#InternalErrorException\": return [3 /*break*/, 4];\n case \"InvalidParameterException\": return [3 /*break*/, 6];\n case \"com.amazonaws.cognito.identity.model#InvalidParameterException\": return [3 /*break*/, 6];\n case \"LimitExceededException\": return [3 /*break*/, 8];\n case \"com.amazonaws.cognito.identity.model#LimitExceededException\": return [3 /*break*/, 8];\n case \"NotAuthorizedException\": return [3 /*break*/, 10];\n case \"com.amazonaws.cognito.identity.model#NotAuthorizedException\": return [3 /*break*/, 10];\n case \"ResourceConflictException\": return [3 /*break*/, 12];\n case \"com.amazonaws.cognito.identity.model#ResourceConflictException\": return [3 /*break*/, 12];\n case \"ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"com.amazonaws.cognito.identity.model#ResourceNotFoundException\": return [3 /*break*/, 14];\n case \"TooManyRequestsException\": return [3 /*break*/, 16];\n case \"com.amazonaws.cognito.identity.model#TooManyRequestsException\": return [3 /*break*/, 16];\n }\n return [3 /*break*/, 18];\n case 2:\n _d = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ConcurrentModificationExceptionResponse(parsedOutput, context)];\n case 3:\n response = __assign.apply(void 0, [__assign.apply(void 0, _d.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 4:\n _e = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InternalErrorExceptionResponse(parsedOutput, context)];\n case 5:\n response = __assign.apply(void 0, [__assign.apply(void 0, _e.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 6:\n _f = [{}];\n return [4 /*yield*/, deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context)];\n case 7:\n response = __assign.apply(void 0, [__assign.apply(void 0, _f.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 8:\n _g = [{}];\n return [4 /*yield*/, deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context)];\n case 9:\n response = __assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 10:\n _h = [{}];\n return [4 /*yield*/, deserializeAws_json1_1NotAuthorizedExceptionResponse(parsedOutput, context)];\n case 11:\n response = __assign.apply(void 0, [__assign.apply(void 0, _h.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 12:\n _j = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceConflictExceptionResponse(parsedOutput, context)];\n case 13:\n response = __assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 14:\n _k = [{}];\n return [4 /*yield*/, deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context)];\n case 15:\n response = __assign.apply(void 0, [__assign.apply(void 0, _k.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 16:\n _l = [{}];\n return [4 /*yield*/, deserializeAws_json1_1TooManyRequestsExceptionResponse(parsedOutput, context)];\n case 17:\n response = __assign.apply(void 0, [__assign.apply(void 0, _l.concat([(_m.sent())])), { name: errorCode, $metadata: deserializeMetadata(output) }]);\n return [3 /*break*/, 19];\n case 18:\n parsedBody = parsedOutput.body;\n errorCode = parsedBody.code || parsedBody.Code || errorCode;\n response = __assign(__assign({}, parsedBody), { name: \"\" + errorCode, message: parsedBody.message || parsedBody.Message || errorCode, $fault: \"client\", $metadata: deserializeMetadata(output) });\n _m.label = 19;\n case 19:\n message = response.message || response.Message || errorCode;\n response.message = message;\n delete response.Message;\n return [2 /*return*/, Promise.reject(Object.assign(new Error(message), response))];\n }\n });\n });\n}\nvar deserializeAws_json1_1ConcurrentModificationExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1ConcurrentModificationException(body, context);\n contents = __assign({ name: \"ConcurrentModificationException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1DeveloperUserAlreadyRegisteredExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1DeveloperUserAlreadyRegisteredException(body, context);\n contents = __assign({ name: \"DeveloperUserAlreadyRegisteredException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1ExternalServiceExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1ExternalServiceException(body, context);\n contents = __assign({ name: \"ExternalServiceException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1InternalErrorExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1InternalErrorException(body, context);\n contents = __assign({ name: \"InternalErrorException\", $fault: \"server\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1InvalidIdentityPoolConfigurationExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1InvalidIdentityPoolConfigurationException(body, context);\n contents = __assign({ name: \"InvalidIdentityPoolConfigurationException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1InvalidParameterExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1InvalidParameterException(body, context);\n contents = __assign({ name: \"InvalidParameterException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1LimitExceededExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1LimitExceededException(body, context);\n contents = __assign({ name: \"LimitExceededException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1NotAuthorizedExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1NotAuthorizedException(body, context);\n contents = __assign({ name: \"NotAuthorizedException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1ResourceConflictExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1ResourceConflictException(body, context);\n contents = __assign({ name: \"ResourceConflictException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1ResourceNotFoundExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1ResourceNotFoundException(body, context);\n contents = __assign({ name: \"ResourceNotFoundException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar deserializeAws_json1_1TooManyRequestsExceptionResponse = function (parsedOutput, context) { return __awaiter(void 0, void 0, void 0, function () {\n var body, deserialized, contents;\n return __generator(this, function (_a) {\n body = parsedOutput.body;\n deserialized = deserializeAws_json1_1TooManyRequestsException(body, context);\n contents = __assign({ name: \"TooManyRequestsException\", $fault: \"client\", $metadata: deserializeMetadata(parsedOutput) }, deserialized);\n return [2 /*return*/, contents];\n });\n}); };\nvar serializeAws_json1_1CognitoIdentityProvider = function (input, context) {\n var bodyParams = {};\n if (input.ClientId !== undefined) {\n bodyParams[\"ClientId\"] = input.ClientId;\n }\n if (input.ProviderName !== undefined) {\n bodyParams[\"ProviderName\"] = input.ProviderName;\n }\n if (input.ServerSideTokenCheck !== undefined) {\n bodyParams[\"ServerSideTokenCheck\"] = input.ServerSideTokenCheck;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1CognitoIdentityProviderList = function (input, context) {\n var e_1, _a;\n var contents = [];\n try {\n for (var input_1 = __values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {\n var entry = input_1_1.value;\n contents.push(serializeAws_json1_1CognitoIdentityProvider(entry, context));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1CreateIdentityPoolInput = function (input, context) {\n var bodyParams = {};\n if (input.AllowClassicFlow !== undefined) {\n bodyParams[\"AllowClassicFlow\"] = input.AllowClassicFlow;\n }\n if (input.AllowUnauthenticatedIdentities !== undefined) {\n bodyParams[\"AllowUnauthenticatedIdentities\"] =\n input.AllowUnauthenticatedIdentities;\n }\n if (input.CognitoIdentityProviders !== undefined) {\n bodyParams[\"CognitoIdentityProviders\"] = serializeAws_json1_1CognitoIdentityProviderList(input.CognitoIdentityProviders, context);\n }\n if (input.DeveloperProviderName !== undefined) {\n bodyParams[\"DeveloperProviderName\"] = input.DeveloperProviderName;\n }\n if (input.IdentityPoolName !== undefined) {\n bodyParams[\"IdentityPoolName\"] = input.IdentityPoolName;\n }\n if (input.IdentityPoolTags !== undefined) {\n bodyParams[\"IdentityPoolTags\"] = serializeAws_json1_1IdentityPoolTagsType(input.IdentityPoolTags, context);\n }\n if (input.OpenIdConnectProviderARNs !== undefined) {\n bodyParams[\"OpenIdConnectProviderARNs\"] = serializeAws_json1_1OIDCProviderList(input.OpenIdConnectProviderARNs, context);\n }\n if (input.SamlProviderARNs !== undefined) {\n bodyParams[\"SamlProviderARNs\"] = serializeAws_json1_1SAMLProviderList(input.SamlProviderARNs, context);\n }\n if (input.SupportedLoginProviders !== undefined) {\n bodyParams[\"SupportedLoginProviders\"] = serializeAws_json1_1IdentityProviders(input.SupportedLoginProviders, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1DeleteIdentitiesInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityIdsToDelete !== undefined) {\n bodyParams[\"IdentityIdsToDelete\"] = serializeAws_json1_1IdentityIdList(input.IdentityIdsToDelete, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1DeleteIdentityPoolInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1DescribeIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1DescribeIdentityPoolInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1GetCredentialsForIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.CustomRoleArn !== undefined) {\n bodyParams[\"CustomRoleArn\"] = input.CustomRoleArn;\n }\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.Logins !== undefined) {\n bodyParams[\"Logins\"] = serializeAws_json1_1LoginsMap(input.Logins, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1GetIdInput = function (input, context) {\n var bodyParams = {};\n if (input.AccountId !== undefined) {\n bodyParams[\"AccountId\"] = input.AccountId;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.Logins !== undefined) {\n bodyParams[\"Logins\"] = serializeAws_json1_1LoginsMap(input.Logins, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1GetIdentityPoolRolesInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1GetOpenIdTokenForDeveloperIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.Logins !== undefined) {\n bodyParams[\"Logins\"] = serializeAws_json1_1LoginsMap(input.Logins, context);\n }\n if (input.TokenDuration !== undefined) {\n bodyParams[\"TokenDuration\"] = input.TokenDuration;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1GetOpenIdTokenInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.Logins !== undefined) {\n bodyParams[\"Logins\"] = serializeAws_json1_1LoginsMap(input.Logins, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1IdentityIdList = function (input, context) {\n var e_2, _a;\n var contents = [];\n try {\n for (var input_2 = __values(input), input_2_1 = input_2.next(); !input_2_1.done; input_2_1 = input_2.next()) {\n var entry = input_2_1.value;\n contents.push(entry);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (input_2_1 && !input_2_1.done && (_a = input_2.return)) _a.call(input_2);\n }\n finally { if (e_2) throw e_2.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1IdentityPool = function (input, context) {\n var bodyParams = {};\n if (input.AllowClassicFlow !== undefined) {\n bodyParams[\"AllowClassicFlow\"] = input.AllowClassicFlow;\n }\n if (input.AllowUnauthenticatedIdentities !== undefined) {\n bodyParams[\"AllowUnauthenticatedIdentities\"] =\n input.AllowUnauthenticatedIdentities;\n }\n if (input.CognitoIdentityProviders !== undefined) {\n bodyParams[\"CognitoIdentityProviders\"] = serializeAws_json1_1CognitoIdentityProviderList(input.CognitoIdentityProviders, context);\n }\n if (input.DeveloperProviderName !== undefined) {\n bodyParams[\"DeveloperProviderName\"] = input.DeveloperProviderName;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.IdentityPoolName !== undefined) {\n bodyParams[\"IdentityPoolName\"] = input.IdentityPoolName;\n }\n if (input.IdentityPoolTags !== undefined) {\n bodyParams[\"IdentityPoolTags\"] = serializeAws_json1_1IdentityPoolTagsType(input.IdentityPoolTags, context);\n }\n if (input.OpenIdConnectProviderARNs !== undefined) {\n bodyParams[\"OpenIdConnectProviderARNs\"] = serializeAws_json1_1OIDCProviderList(input.OpenIdConnectProviderARNs, context);\n }\n if (input.SamlProviderARNs !== undefined) {\n bodyParams[\"SamlProviderARNs\"] = serializeAws_json1_1SAMLProviderList(input.SamlProviderARNs, context);\n }\n if (input.SupportedLoginProviders !== undefined) {\n bodyParams[\"SupportedLoginProviders\"] = serializeAws_json1_1IdentityProviders(input.SupportedLoginProviders, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1IdentityPoolTagsListType = function (input, context) {\n var e_3, _a;\n var contents = [];\n try {\n for (var input_3 = __values(input), input_3_1 = input_3.next(); !input_3_1.done; input_3_1 = input_3.next()) {\n var entry = input_3_1.value;\n contents.push(entry);\n }\n }\n catch (e_3_1) { e_3 = { error: e_3_1 }; }\n finally {\n try {\n if (input_3_1 && !input_3_1.done && (_a = input_3.return)) _a.call(input_3);\n }\n finally { if (e_3) throw e_3.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1IdentityPoolTagsType = function (input, context) {\n var mapParams = {};\n Object.keys(input).forEach(function (key) {\n mapParams[key] = input[key];\n });\n return mapParams;\n};\nvar serializeAws_json1_1IdentityProviders = function (input, context) {\n var mapParams = {};\n Object.keys(input).forEach(function (key) {\n mapParams[key] = input[key];\n });\n return mapParams;\n};\nvar serializeAws_json1_1ListIdentitiesInput = function (input, context) {\n var bodyParams = {};\n if (input.HideDisabled !== undefined) {\n bodyParams[\"HideDisabled\"] = input.HideDisabled;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.MaxResults !== undefined) {\n bodyParams[\"MaxResults\"] = input.MaxResults;\n }\n if (input.NextToken !== undefined) {\n bodyParams[\"NextToken\"] = input.NextToken;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1ListIdentityPoolsInput = function (input, context) {\n var bodyParams = {};\n if (input.MaxResults !== undefined) {\n bodyParams[\"MaxResults\"] = input.MaxResults;\n }\n if (input.NextToken !== undefined) {\n bodyParams[\"NextToken\"] = input.NextToken;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1ListTagsForResourceInput = function (input, context) {\n var bodyParams = {};\n if (input.ResourceArn !== undefined) {\n bodyParams[\"ResourceArn\"] = input.ResourceArn;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1LoginsList = function (input, context) {\n var e_4, _a;\n var contents = [];\n try {\n for (var input_4 = __values(input), input_4_1 = input_4.next(); !input_4_1.done; input_4_1 = input_4.next()) {\n var entry = input_4_1.value;\n contents.push(entry);\n }\n }\n catch (e_4_1) { e_4 = { error: e_4_1 }; }\n finally {\n try {\n if (input_4_1 && !input_4_1.done && (_a = input_4.return)) _a.call(input_4);\n }\n finally { if (e_4) throw e_4.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1LoginsMap = function (input, context) {\n var mapParams = {};\n Object.keys(input).forEach(function (key) {\n mapParams[key] = input[key];\n });\n return mapParams;\n};\nvar serializeAws_json1_1LookupDeveloperIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.DeveloperUserIdentifier !== undefined) {\n bodyParams[\"DeveloperUserIdentifier\"] = input.DeveloperUserIdentifier;\n }\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.MaxResults !== undefined) {\n bodyParams[\"MaxResults\"] = input.MaxResults;\n }\n if (input.NextToken !== undefined) {\n bodyParams[\"NextToken\"] = input.NextToken;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1MappingRule = function (input, context) {\n var bodyParams = {};\n if (input.Claim !== undefined) {\n bodyParams[\"Claim\"] = input.Claim;\n }\n if (input.MatchType !== undefined) {\n bodyParams[\"MatchType\"] = input.MatchType;\n }\n if (input.RoleARN !== undefined) {\n bodyParams[\"RoleARN\"] = input.RoleARN;\n }\n if (input.Value !== undefined) {\n bodyParams[\"Value\"] = input.Value;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1MappingRulesList = function (input, context) {\n var e_5, _a;\n var contents = [];\n try {\n for (var input_5 = __values(input), input_5_1 = input_5.next(); !input_5_1.done; input_5_1 = input_5.next()) {\n var entry = input_5_1.value;\n contents.push(serializeAws_json1_1MappingRule(entry, context));\n }\n }\n catch (e_5_1) { e_5 = { error: e_5_1 }; }\n finally {\n try {\n if (input_5_1 && !input_5_1.done && (_a = input_5.return)) _a.call(input_5);\n }\n finally { if (e_5) throw e_5.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1MergeDeveloperIdentitiesInput = function (input, context) {\n var bodyParams = {};\n if (input.DestinationUserIdentifier !== undefined) {\n bodyParams[\"DestinationUserIdentifier\"] = input.DestinationUserIdentifier;\n }\n if (input.DeveloperProviderName !== undefined) {\n bodyParams[\"DeveloperProviderName\"] = input.DeveloperProviderName;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.SourceUserIdentifier !== undefined) {\n bodyParams[\"SourceUserIdentifier\"] = input.SourceUserIdentifier;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1OIDCProviderList = function (input, context) {\n var e_6, _a;\n var contents = [];\n try {\n for (var input_6 = __values(input), input_6_1 = input_6.next(); !input_6_1.done; input_6_1 = input_6.next()) {\n var entry = input_6_1.value;\n contents.push(entry);\n }\n }\n catch (e_6_1) { e_6 = { error: e_6_1 }; }\n finally {\n try {\n if (input_6_1 && !input_6_1.done && (_a = input_6.return)) _a.call(input_6);\n }\n finally { if (e_6) throw e_6.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1RoleMapping = function (input, context) {\n var bodyParams = {};\n if (input.AmbiguousRoleResolution !== undefined) {\n bodyParams[\"AmbiguousRoleResolution\"] = input.AmbiguousRoleResolution;\n }\n if (input.RulesConfiguration !== undefined) {\n bodyParams[\"RulesConfiguration\"] = serializeAws_json1_1RulesConfigurationType(input.RulesConfiguration, context);\n }\n if (input.Type !== undefined) {\n bodyParams[\"Type\"] = input.Type;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1RoleMappingMap = function (input, context) {\n var mapParams = {};\n Object.keys(input).forEach(function (key) {\n mapParams[key] = serializeAws_json1_1RoleMapping(input[key], context);\n });\n return mapParams;\n};\nvar serializeAws_json1_1RolesMap = function (input, context) {\n var mapParams = {};\n Object.keys(input).forEach(function (key) {\n mapParams[key] = input[key];\n });\n return mapParams;\n};\nvar serializeAws_json1_1RulesConfigurationType = function (input, context) {\n var bodyParams = {};\n if (input.Rules !== undefined) {\n bodyParams[\"Rules\"] = serializeAws_json1_1MappingRulesList(input.Rules, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1SAMLProviderList = function (input, context) {\n var e_7, _a;\n var contents = [];\n try {\n for (var input_7 = __values(input), input_7_1 = input_7.next(); !input_7_1.done; input_7_1 = input_7.next()) {\n var entry = input_7_1.value;\n contents.push(entry);\n }\n }\n catch (e_7_1) { e_7 = { error: e_7_1 }; }\n finally {\n try {\n if (input_7_1 && !input_7_1.done && (_a = input_7.return)) _a.call(input_7);\n }\n finally { if (e_7) throw e_7.error; }\n }\n return contents;\n};\nvar serializeAws_json1_1SetIdentityPoolRolesInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n if (input.RoleMappings !== undefined) {\n bodyParams[\"RoleMappings\"] = serializeAws_json1_1RoleMappingMap(input.RoleMappings, context);\n }\n if (input.Roles !== undefined) {\n bodyParams[\"Roles\"] = serializeAws_json1_1RolesMap(input.Roles, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1TagResourceInput = function (input, context) {\n var bodyParams = {};\n if (input.ResourceArn !== undefined) {\n bodyParams[\"ResourceArn\"] = input.ResourceArn;\n }\n if (input.Tags !== undefined) {\n bodyParams[\"Tags\"] = serializeAws_json1_1IdentityPoolTagsType(input.Tags, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1UnlinkDeveloperIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.DeveloperProviderName !== undefined) {\n bodyParams[\"DeveloperProviderName\"] = input.DeveloperProviderName;\n }\n if (input.DeveloperUserIdentifier !== undefined) {\n bodyParams[\"DeveloperUserIdentifier\"] = input.DeveloperUserIdentifier;\n }\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.IdentityPoolId !== undefined) {\n bodyParams[\"IdentityPoolId\"] = input.IdentityPoolId;\n }\n return bodyParams;\n};\nvar serializeAws_json1_1UnlinkIdentityInput = function (input, context) {\n var bodyParams = {};\n if (input.IdentityId !== undefined) {\n bodyParams[\"IdentityId\"] = input.IdentityId;\n }\n if (input.Logins !== undefined) {\n bodyParams[\"Logins\"] = serializeAws_json1_1LoginsMap(input.Logins, context);\n }\n if (input.LoginsToRemove !== undefined) {\n bodyParams[\"LoginsToRemove\"] = serializeAws_json1_1LoginsList(input.LoginsToRemove, context);\n }\n return bodyParams;\n};\nvar serializeAws_json1_1UntagResourceInput = function (input, context) {\n var bodyParams = {};\n if (input.ResourceArn !== undefined) {\n bodyParams[\"ResourceArn\"] = input.ResourceArn;\n }\n if (input.TagKeys !== undefined) {\n bodyParams[\"TagKeys\"] = serializeAws_json1_1IdentityPoolTagsListType(input.TagKeys, context);\n }\n return bodyParams;\n};\nvar deserializeAws_json1_1CognitoIdentityProvider = function (output, context) {\n var contents = {\n __type: \"CognitoIdentityProvider\",\n ClientId: undefined,\n ProviderName: undefined,\n ServerSideTokenCheck: undefined\n };\n if (output.ClientId !== undefined && output.ClientId !== null) {\n contents.ClientId = output.ClientId;\n }\n if (output.ProviderName !== undefined && output.ProviderName !== null) {\n contents.ProviderName = output.ProviderName;\n }\n if (output.ServerSideTokenCheck !== undefined &&\n output.ServerSideTokenCheck !== null) {\n contents.ServerSideTokenCheck = output.ServerSideTokenCheck;\n }\n return contents;\n};\nvar deserializeAws_json1_1CognitoIdentityProviderList = function (output, context) {\n return (output || []).map(function (entry) {\n return deserializeAws_json1_1CognitoIdentityProvider(entry, context);\n });\n};\nvar deserializeAws_json1_1ConcurrentModificationException = function (output, context) {\n var contents = {\n __type: \"ConcurrentModificationException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1Credentials = function (output, context) {\n var contents = {\n __type: \"Credentials\",\n AccessKeyId: undefined,\n Expiration: undefined,\n SecretKey: undefined,\n SessionToken: undefined\n };\n if (output.AccessKeyId !== undefined && output.AccessKeyId !== null) {\n contents.AccessKeyId = output.AccessKeyId;\n }\n if (output.Expiration !== undefined && output.Expiration !== null) {\n contents.Expiration = new Date(Math.round(output.Expiration * 1000));\n }\n if (output.SecretKey !== undefined && output.SecretKey !== null) {\n contents.SecretKey = output.SecretKey;\n }\n if (output.SessionToken !== undefined && output.SessionToken !== null) {\n contents.SessionToken = output.SessionToken;\n }\n return contents;\n};\nvar deserializeAws_json1_1DeleteIdentitiesResponse = function (output, context) {\n var contents = {\n __type: \"DeleteIdentitiesResponse\",\n UnprocessedIdentityIds: undefined\n };\n if (output.UnprocessedIdentityIds !== undefined &&\n output.UnprocessedIdentityIds !== null) {\n contents.UnprocessedIdentityIds = deserializeAws_json1_1UnprocessedIdentityIdList(output.UnprocessedIdentityIds, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1DeveloperUserAlreadyRegisteredException = function (output, context) {\n var contents = {\n __type: \"DeveloperUserAlreadyRegisteredException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1DeveloperUserIdentifierList = function (output, context) {\n return (output || []).map(function (entry) { return entry; });\n};\nvar deserializeAws_json1_1ExternalServiceException = function (output, context) {\n var contents = {\n __type: \"ExternalServiceException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1GetCredentialsForIdentityResponse = function (output, context) {\n var contents = {\n __type: \"GetCredentialsForIdentityResponse\",\n Credentials: undefined,\n IdentityId: undefined\n };\n if (output.Credentials !== undefined && output.Credentials !== null) {\n contents.Credentials = deserializeAws_json1_1Credentials(output.Credentials, context);\n }\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n return contents;\n};\nvar deserializeAws_json1_1GetIdResponse = function (output, context) {\n var contents = {\n __type: \"GetIdResponse\",\n IdentityId: undefined\n };\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n return contents;\n};\nvar deserializeAws_json1_1GetIdentityPoolRolesResponse = function (output, context) {\n var contents = {\n __type: \"GetIdentityPoolRolesResponse\",\n IdentityPoolId: undefined,\n RoleMappings: undefined,\n Roles: undefined\n };\n if (output.IdentityPoolId !== undefined && output.IdentityPoolId !== null) {\n contents.IdentityPoolId = output.IdentityPoolId;\n }\n if (output.RoleMappings !== undefined && output.RoleMappings !== null) {\n contents.RoleMappings = deserializeAws_json1_1RoleMappingMap(output.RoleMappings, context);\n }\n if (output.Roles !== undefined && output.Roles !== null) {\n contents.Roles = deserializeAws_json1_1RolesMap(output.Roles, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1GetOpenIdTokenForDeveloperIdentityResponse = function (output, context) {\n var contents = {\n __type: \"GetOpenIdTokenForDeveloperIdentityResponse\",\n IdentityId: undefined,\n Token: undefined\n };\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n if (output.Token !== undefined && output.Token !== null) {\n contents.Token = output.Token;\n }\n return contents;\n};\nvar deserializeAws_json1_1GetOpenIdTokenResponse = function (output, context) {\n var contents = {\n __type: \"GetOpenIdTokenResponse\",\n IdentityId: undefined,\n Token: undefined\n };\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n if (output.Token !== undefined && output.Token !== null) {\n contents.Token = output.Token;\n }\n return contents;\n};\nvar deserializeAws_json1_1IdentitiesList = function (output, context) {\n return (output || []).map(function (entry) {\n return deserializeAws_json1_1IdentityDescription(entry, context);\n });\n};\nvar deserializeAws_json1_1IdentityDescription = function (output, context) {\n var contents = {\n __type: \"IdentityDescription\",\n CreationDate: undefined,\n IdentityId: undefined,\n LastModifiedDate: undefined,\n Logins: undefined\n };\n if (output.CreationDate !== undefined && output.CreationDate !== null) {\n contents.CreationDate = new Date(Math.round(output.CreationDate * 1000));\n }\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n if (output.LastModifiedDate !== undefined &&\n output.LastModifiedDate !== null) {\n contents.LastModifiedDate = new Date(Math.round(output.LastModifiedDate * 1000));\n }\n if (output.Logins !== undefined && output.Logins !== null) {\n contents.Logins = deserializeAws_json1_1LoginsList(output.Logins, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1IdentityPool = function (output, context) {\n var contents = {\n __type: \"IdentityPool\",\n AllowClassicFlow: undefined,\n AllowUnauthenticatedIdentities: undefined,\n CognitoIdentityProviders: undefined,\n DeveloperProviderName: undefined,\n IdentityPoolId: undefined,\n IdentityPoolName: undefined,\n IdentityPoolTags: undefined,\n OpenIdConnectProviderARNs: undefined,\n SamlProviderARNs: undefined,\n SupportedLoginProviders: undefined\n };\n if (output.AllowClassicFlow !== undefined &&\n output.AllowClassicFlow !== null) {\n contents.AllowClassicFlow = output.AllowClassicFlow;\n }\n if (output.AllowUnauthenticatedIdentities !== undefined &&\n output.AllowUnauthenticatedIdentities !== null) {\n contents.AllowUnauthenticatedIdentities =\n output.AllowUnauthenticatedIdentities;\n }\n if (output.CognitoIdentityProviders !== undefined &&\n output.CognitoIdentityProviders !== null) {\n contents.CognitoIdentityProviders = deserializeAws_json1_1CognitoIdentityProviderList(output.CognitoIdentityProviders, context);\n }\n if (output.DeveloperProviderName !== undefined &&\n output.DeveloperProviderName !== null) {\n contents.DeveloperProviderName = output.DeveloperProviderName;\n }\n if (output.IdentityPoolId !== undefined && output.IdentityPoolId !== null) {\n contents.IdentityPoolId = output.IdentityPoolId;\n }\n if (output.IdentityPoolName !== undefined &&\n output.IdentityPoolName !== null) {\n contents.IdentityPoolName = output.IdentityPoolName;\n }\n if (output.IdentityPoolTags !== undefined &&\n output.IdentityPoolTags !== null) {\n contents.IdentityPoolTags = deserializeAws_json1_1IdentityPoolTagsType(output.IdentityPoolTags, context);\n }\n if (output.OpenIdConnectProviderARNs !== undefined &&\n output.OpenIdConnectProviderARNs !== null) {\n contents.OpenIdConnectProviderARNs = deserializeAws_json1_1OIDCProviderList(output.OpenIdConnectProviderARNs, context);\n }\n if (output.SamlProviderARNs !== undefined &&\n output.SamlProviderARNs !== null) {\n contents.SamlProviderARNs = deserializeAws_json1_1SAMLProviderList(output.SamlProviderARNs, context);\n }\n if (output.SupportedLoginProviders !== undefined &&\n output.SupportedLoginProviders !== null) {\n contents.SupportedLoginProviders = deserializeAws_json1_1IdentityProviders(output.SupportedLoginProviders, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1IdentityPoolShortDescription = function (output, context) {\n var contents = {\n __type: \"IdentityPoolShortDescription\",\n IdentityPoolId: undefined,\n IdentityPoolName: undefined\n };\n if (output.IdentityPoolId !== undefined && output.IdentityPoolId !== null) {\n contents.IdentityPoolId = output.IdentityPoolId;\n }\n if (output.IdentityPoolName !== undefined &&\n output.IdentityPoolName !== null) {\n contents.IdentityPoolName = output.IdentityPoolName;\n }\n return contents;\n};\nvar deserializeAws_json1_1IdentityPoolTagsType = function (output, context) {\n var mapParams = {};\n Object.keys(output).forEach(function (key) {\n mapParams[key] = output[key];\n });\n return mapParams;\n};\nvar deserializeAws_json1_1IdentityPoolsList = function (output, context) {\n return (output || []).map(function (entry) {\n return deserializeAws_json1_1IdentityPoolShortDescription(entry, context);\n });\n};\nvar deserializeAws_json1_1IdentityProviders = function (output, context) {\n var mapParams = {};\n Object.keys(output).forEach(function (key) {\n mapParams[key] = output[key];\n });\n return mapParams;\n};\nvar deserializeAws_json1_1InternalErrorException = function (output, context) {\n var contents = {\n __type: \"InternalErrorException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1InvalidIdentityPoolConfigurationException = function (output, context) {\n var contents = {\n __type: \"InvalidIdentityPoolConfigurationException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1InvalidParameterException = function (output, context) {\n var contents = {\n __type: \"InvalidParameterException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1LimitExceededException = function (output, context) {\n var contents = {\n __type: \"LimitExceededException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1ListIdentitiesResponse = function (output, context) {\n var contents = {\n __type: \"ListIdentitiesResponse\",\n Identities: undefined,\n IdentityPoolId: undefined,\n NextToken: undefined\n };\n if (output.Identities !== undefined && output.Identities !== null) {\n contents.Identities = deserializeAws_json1_1IdentitiesList(output.Identities, context);\n }\n if (output.IdentityPoolId !== undefined && output.IdentityPoolId !== null) {\n contents.IdentityPoolId = output.IdentityPoolId;\n }\n if (output.NextToken !== undefined && output.NextToken !== null) {\n contents.NextToken = output.NextToken;\n }\n return contents;\n};\nvar deserializeAws_json1_1ListIdentityPoolsResponse = function (output, context) {\n var contents = {\n __type: \"ListIdentityPoolsResponse\",\n IdentityPools: undefined,\n NextToken: undefined\n };\n if (output.IdentityPools !== undefined && output.IdentityPools !== null) {\n contents.IdentityPools = deserializeAws_json1_1IdentityPoolsList(output.IdentityPools, context);\n }\n if (output.NextToken !== undefined && output.NextToken !== null) {\n contents.NextToken = output.NextToken;\n }\n return contents;\n};\nvar deserializeAws_json1_1ListTagsForResourceResponse = function (output, context) {\n var contents = {\n __type: \"ListTagsForResourceResponse\",\n Tags: undefined\n };\n if (output.Tags !== undefined && output.Tags !== null) {\n contents.Tags = deserializeAws_json1_1IdentityPoolTagsType(output.Tags, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1LoginsList = function (output, context) {\n return (output || []).map(function (entry) { return entry; });\n};\nvar deserializeAws_json1_1LookupDeveloperIdentityResponse = function (output, context) {\n var contents = {\n __type: \"LookupDeveloperIdentityResponse\",\n DeveloperUserIdentifierList: undefined,\n IdentityId: undefined,\n NextToken: undefined\n };\n if (output.DeveloperUserIdentifierList !== undefined &&\n output.DeveloperUserIdentifierList !== null) {\n contents.DeveloperUserIdentifierList = deserializeAws_json1_1DeveloperUserIdentifierList(output.DeveloperUserIdentifierList, context);\n }\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n if (output.NextToken !== undefined && output.NextToken !== null) {\n contents.NextToken = output.NextToken;\n }\n return contents;\n};\nvar deserializeAws_json1_1MappingRule = function (output, context) {\n var contents = {\n __type: \"MappingRule\",\n Claim: undefined,\n MatchType: undefined,\n RoleARN: undefined,\n Value: undefined\n };\n if (output.Claim !== undefined && output.Claim !== null) {\n contents.Claim = output.Claim;\n }\n if (output.MatchType !== undefined && output.MatchType !== null) {\n contents.MatchType = output.MatchType;\n }\n if (output.RoleARN !== undefined && output.RoleARN !== null) {\n contents.RoleARN = output.RoleARN;\n }\n if (output.Value !== undefined && output.Value !== null) {\n contents.Value = output.Value;\n }\n return contents;\n};\nvar deserializeAws_json1_1MappingRulesList = function (output, context) {\n return (output || []).map(function (entry) {\n return deserializeAws_json1_1MappingRule(entry, context);\n });\n};\nvar deserializeAws_json1_1MergeDeveloperIdentitiesResponse = function (output, context) {\n var contents = {\n __type: \"MergeDeveloperIdentitiesResponse\",\n IdentityId: undefined\n };\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n return contents;\n};\nvar deserializeAws_json1_1NotAuthorizedException = function (output, context) {\n var contents = {\n __type: \"NotAuthorizedException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1OIDCProviderList = function (output, context) {\n return (output || []).map(function (entry) { return entry; });\n};\nvar deserializeAws_json1_1ResourceConflictException = function (output, context) {\n var contents = {\n __type: \"ResourceConflictException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1ResourceNotFoundException = function (output, context) {\n var contents = {\n __type: \"ResourceNotFoundException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1RoleMapping = function (output, context) {\n var contents = {\n __type: \"RoleMapping\",\n AmbiguousRoleResolution: undefined,\n RulesConfiguration: undefined,\n Type: undefined\n };\n if (output.AmbiguousRoleResolution !== undefined &&\n output.AmbiguousRoleResolution !== null) {\n contents.AmbiguousRoleResolution = output.AmbiguousRoleResolution;\n }\n if (output.RulesConfiguration !== undefined &&\n output.RulesConfiguration !== null) {\n contents.RulesConfiguration = deserializeAws_json1_1RulesConfigurationType(output.RulesConfiguration, context);\n }\n if (output.Type !== undefined && output.Type !== null) {\n contents.Type = output.Type;\n }\n return contents;\n};\nvar deserializeAws_json1_1RoleMappingMap = function (output, context) {\n var mapParams = {};\n Object.keys(output).forEach(function (key) {\n mapParams[key] = deserializeAws_json1_1RoleMapping(output[key], context);\n });\n return mapParams;\n};\nvar deserializeAws_json1_1RolesMap = function (output, context) {\n var mapParams = {};\n Object.keys(output).forEach(function (key) {\n mapParams[key] = output[key];\n });\n return mapParams;\n};\nvar deserializeAws_json1_1RulesConfigurationType = function (output, context) {\n var contents = {\n __type: \"RulesConfigurationType\",\n Rules: undefined\n };\n if (output.Rules !== undefined && output.Rules !== null) {\n contents.Rules = deserializeAws_json1_1MappingRulesList(output.Rules, context);\n }\n return contents;\n};\nvar deserializeAws_json1_1SAMLProviderList = function (output, context) {\n return (output || []).map(function (entry) { return entry; });\n};\nvar deserializeAws_json1_1TagResourceResponse = function (output, context) {\n var contents = {\n __type: \"TagResourceResponse\"\n };\n return contents;\n};\nvar deserializeAws_json1_1TooManyRequestsException = function (output, context) {\n var contents = {\n __type: \"TooManyRequestsException\",\n message: undefined\n };\n if (output.message !== undefined && output.message !== null) {\n contents.message = output.message;\n }\n return contents;\n};\nvar deserializeAws_json1_1UnprocessedIdentityId = function (output, context) {\n var contents = {\n __type: \"UnprocessedIdentityId\",\n ErrorCode: undefined,\n IdentityId: undefined\n };\n if (output.ErrorCode !== undefined && output.ErrorCode !== null) {\n contents.ErrorCode = output.ErrorCode;\n }\n if (output.IdentityId !== undefined && output.IdentityId !== null) {\n contents.IdentityId = output.IdentityId;\n }\n return contents;\n};\nvar deserializeAws_json1_1UnprocessedIdentityIdList = function (output, context) {\n return (output || []).map(function (entry) {\n return deserializeAws_json1_1UnprocessedIdentityId(entry, context);\n });\n};\nvar deserializeAws_json1_1UntagResourceResponse = function (output, context) {\n var contents = {\n __type: \"UntagResourceResponse\"\n };\n return contents;\n};\nvar deserializeMetadata = function (output) { return ({\n httpStatusCode: output.statusCode,\n httpHeaders: output.headers,\n requestId: output.headers[\"x-amzn-requestid\"]\n}); };\n// Collect low-level response body stream to Uint8Array.\nvar collectBody = function (streamBody, context) {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return (context.streamCollector(streamBody) || Promise.resolve(new Uint8Array()));\n};\n// Encode Uint8Array data into string with utf-8.\nvar collectBodyString = function (streamBody, context) {\n return collectBody(streamBody, context).then(function (body) {\n return context.utf8Encoder(body);\n });\n};\nvar buildHttpRpcRequest = function (context, headers, path, resolvedHostname, body) {\n var contents = __assign(__assign({}, context.endpoint), { protocol: \"https\", method: \"POST\", path: path, headers: headers });\n if (resolvedHostname !== undefined) {\n contents.hostname = resolvedHostname;\n }\n if (body !== undefined) {\n contents.body = body;\n }\n return new __HttpRequest(contents);\n};\nvar parseBody = function (streamBody, context) {\n return collectBodyString(streamBody, context).then(function (encoded) {\n if (encoded.length) {\n return JSON.parse(encoded);\n }\n return {};\n });\n};\n//# sourceMappingURL=Aws_json1_1.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_json1_1GetCredentialsForIdentityCommand, serializeAws_json1_1GetCredentialsForIdentityCommand } from \"../protocols/Aws_json1_1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar GetCredentialsForIdentityCommand = /** @class */ (function (_super) {\n __extends(GetCredentialsForIdentityCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function GetCredentialsForIdentityCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n GetCredentialsForIdentityCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n GetCredentialsForIdentityCommand.prototype.serialize = function (input, context) {\n return serializeAws_json1_1GetCredentialsForIdentityCommand(input, context);\n };\n GetCredentialsForIdentityCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_json1_1GetCredentialsForIdentityCommand(output, context);\n };\n return GetCredentialsForIdentityCommand;\n}($Command));\nexport { GetCredentialsForIdentityCommand };\n//# sourceMappingURL=GetCredentialsForIdentityCommand.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { resolveLogins } from \"./resolveLogins\";\nimport { ProviderError } from \"@aws-sdk/property-provider\";\nimport { GetCredentialsForIdentityCommand } from \"@aws-sdk/client-cognito-identity\";\n/**\n * Retrieves temporary AWS credentials using Amazon Cognito's\n * `GetCredentialsForIdentity` operation.\n *\n * Results from this function call are not cached internally.\n */\nexport function fromCognitoIdentity(parameters) {\n var _this = this;\n return function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, _b, _c, AccessKeyId, Expiration, _d, SecretKey, SessionToken, _e, _f, _g, _h, _j;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n _f = (_e = parameters.client).send;\n _g = GetCredentialsForIdentityCommand.bind;\n _h = {\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId\n };\n if (!parameters.logins) return [3 /*break*/, 2];\n return [4 /*yield*/, resolveLogins(parameters.logins)];\n case 1:\n _j = _k.sent();\n return [3 /*break*/, 3];\n case 2:\n _j = undefined;\n _k.label = 3;\n case 3: return [4 /*yield*/, _f.apply(_e, [new (_g.apply(GetCredentialsForIdentityCommand, [void 0, (_h.Logins = _j,\n _h)]))()])];\n case 4:\n _a = (_k.sent()).Credentials, _b = _a === void 0 ? throwOnMissingCredentials() : _a, _c = _b.AccessKeyId, AccessKeyId = _c === void 0 ? throwOnMissingAccessKeyId() : _c, Expiration = _b.Expiration, _d = _b.SecretKey, SecretKey = _d === void 0 ? throwOnMissingSecretKey() : _d, SessionToken = _b.SessionToken;\n return [2 /*return*/, {\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration\n }];\n }\n });\n }); };\n}\nfunction throwOnMissingAccessKeyId() {\n throw new ProviderError(\"Response from Amazon Cognito contained no access key ID\");\n}\nfunction throwOnMissingCredentials() {\n throw new ProviderError(\"Response from Amazon Cognito contained no credentials\");\n}\nfunction throwOnMissingSecretKey() {\n throw new ProviderError(\"Response from Amazon Cognito contained no secret key\");\n}\n//# sourceMappingURL=fromCognitoIdentity.js.map","var STORE_NAME = \"IdentityIds\";\nvar IndexedDbStorage = /** @class */ (function () {\n function IndexedDbStorage(dbName) {\n if (dbName === void 0) { dbName = \"aws:cognito-identity-ids\"; }\n this.dbName = dbName;\n }\n IndexedDbStorage.prototype.getItem = function (key) {\n return this.withObjectStore(\"readonly\", function (store) {\n var req = store.get(key);\n return new Promise(function (resolve) {\n req.onerror = function () { return resolve(null); };\n req.onsuccess = function () { return resolve(req.result ? req.result.value : null); };\n });\n }).catch(function () { return null; });\n };\n IndexedDbStorage.prototype.removeItem = function (key) {\n return this.withObjectStore(\"readwrite\", function (store) {\n var req = store.delete(key);\n return new Promise(function (resolve, reject) {\n req.onerror = function () { return reject(req.error); };\n req.onsuccess = function () { return resolve(); };\n });\n });\n };\n IndexedDbStorage.prototype.setItem = function (id, value) {\n return this.withObjectStore(\"readwrite\", function (store) {\n var req = store.put({ id: id, value: value });\n return new Promise(function (resolve, reject) {\n req.onerror = function () { return reject(req.error); };\n req.onsuccess = function () { return resolve(); };\n });\n });\n };\n IndexedDbStorage.prototype.getDb = function () {\n var openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise(function (resolve, reject) {\n openDbRequest.onsuccess = function () {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = function () {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = function () {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = function (event) {\n var db = openDbRequest.result;\n db.onerror = function () {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n };\n IndexedDbStorage.prototype.withObjectStore = function (mode, action) {\n return this.getDb().then(function (db) {\n var tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = function () { return db.close(); };\n return new Promise(function (resolve, reject) {\n tx.onerror = function () { return reject(tx.error); };\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch(function (err) {\n db.close();\n throw err;\n });\n });\n };\n return IndexedDbStorage;\n}());\nexport { IndexedDbStorage };\n//# sourceMappingURL=IndexedDbStorage.js.map","import { IndexedDbStorage } from \"./IndexedDbStorage\";\nimport { InMemoryStorage } from \"./InMemoryStorage\";\nvar inMemoryStorage = new InMemoryStorage();\nexport function localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n//# sourceMappingURL=localStorage.js.map","var InMemoryStorage = /** @class */ (function () {\n function InMemoryStorage(store) {\n if (store === void 0) { store = {}; }\n this.store = store;\n }\n InMemoryStorage.prototype.getItem = function (key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n };\n InMemoryStorage.prototype.removeItem = function (key) {\n delete this.store[key];\n };\n InMemoryStorage.prototype.setItem = function (key, value) {\n this.store[key] = value;\n };\n return InMemoryStorage;\n}());\nexport { InMemoryStorage };\n//# sourceMappingURL=InMemoryStorage.js.map","import { __extends } from \"tslib\";\nimport { deserializeAws_json1_1GetIdCommand, serializeAws_json1_1GetIdCommand } from \"../protocols/Aws_json1_1\";\nimport { getSerdePlugin } from \"@aws-sdk/middleware-serde\";\nimport { Command as $Command } from \"@aws-sdk/smithy-client\";\nvar GetIdCommand = /** @class */ (function (_super) {\n __extends(GetIdCommand, _super);\n // Start section: command_properties\n // End section: command_properties\n function GetIdCommand(input) {\n var _this = \n // Start section: command_constructor\n _super.call(this) || this;\n _this.input = input;\n return _this;\n // End section: command_constructor\n }\n GetIdCommand.prototype.resolveMiddleware = function (clientStack, configuration, options) {\n this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));\n var stack = clientStack.concat(this.middlewareStack);\n var handlerExecutionContext = {\n logger: {}\n };\n var requestHandler = configuration.requestHandler;\n return stack.resolve(function (request) {\n return requestHandler.handle(request.request, options || {});\n }, handlerExecutionContext);\n };\n GetIdCommand.prototype.serialize = function (input, context) {\n return serializeAws_json1_1GetIdCommand(input, context);\n };\n GetIdCommand.prototype.deserialize = function (output, context) {\n return deserializeAws_json1_1GetIdCommand(output, context);\n };\n return GetIdCommand;\n}($Command));\nexport { GetIdCommand };\n//# sourceMappingURL=GetIdCommand.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { fromCognitoIdentity } from \"./fromCognitoIdentity\";\nimport { localStorage } from \"./localStorage\";\nimport { resolveLogins } from \"./resolveLogins\";\nimport { ProviderError } from \"@aws-sdk/property-provider\";\nimport { GetIdCommand } from \"@aws-sdk/client-cognito-identity\";\n/**\n * Retrieves or generates a unique identifier using Amazon Cognito's `GetId`\n * operation, then generates temporary AWS credentials using Amazon Cognito's\n * `GetCredentialsForIdentity` operation.\n *\n * Results from `GetId` are cached internally, but results from\n * `GetCredentialsForIdentity` are not.\n */\nexport function fromCognitoIdentityPool(_a) {\n var _this = this;\n var accountId = _a.accountId, _b = _a.cache, cache = _b === void 0 ? localStorage() : _b, client = _a.client, customRoleArn = _a.customRoleArn, identityPoolId = _a.identityPoolId, logins = _a.logins, _c = _a.userIdentifier, userIdentifier = _c === void 0 ? !logins || Object.keys(logins).length === 0\n ? \"ANONYMOUS\"\n : undefined : _c;\n var cacheKey = userIdentifier\n ? \"aws:cognito-identity-credentials:\" + identityPoolId + \":\" + userIdentifier\n : undefined;\n var provider = function () { return __awaiter(_this, void 0, void 0, function () {\n var identityId, _a, _b, IdentityId, _c, _d, _e, _f, _g;\n return __generator(this, function (_h) {\n switch (_h.label) {\n case 0:\n _a = cacheKey;\n if (!_a) return [3 /*break*/, 2];\n return [4 /*yield*/, cache.getItem(cacheKey)];\n case 1:\n _a = (_h.sent());\n _h.label = 2;\n case 2:\n identityId = _a;\n if (!!identityId) return [3 /*break*/, 7];\n _d = (_c = client).send;\n _e = GetIdCommand.bind;\n _f = {\n AccountId: accountId,\n IdentityPoolId: identityPoolId\n };\n if (!logins) return [3 /*break*/, 4];\n return [4 /*yield*/, resolveLogins(logins)];\n case 3:\n _g = _h.sent();\n return [3 /*break*/, 5];\n case 4:\n _g = undefined;\n _h.label = 5;\n case 5: return [4 /*yield*/, _d.apply(_c, [new (_e.apply(GetIdCommand, [void 0, (_f.Logins = _g,\n _f)]))()])];\n case 6:\n _b = (_h.sent()).IdentityId, IdentityId = _b === void 0 ? throwOnMissingId() : _b;\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(function () { });\n }\n _h.label = 7;\n case 7:\n provider = fromCognitoIdentity({\n client: client,\n customRoleArn: customRoleArn,\n logins: logins,\n identityId: identityId\n });\n return [2 /*return*/, provider()];\n }\n });\n }); };\n return function () {\n return provider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(function () { });\n }\n throw err;\n });\n }); });\n };\n}\nfunction throwOnMissingId() {\n throw new ProviderError(\"Response from Amazon Cognito contained no identity ID\");\n}\n//# sourceMappingURL=fromCognitoIdentityPool.js.map","import { __assign, __extends } from \"tslib\";\nimport { ClientDefaultValues as __ClientDefaultValues } from \"./runtimeConfig\";\nimport { resolveEndpointsConfig, resolveRegionConfig } from \"@aws-sdk/config-resolver\";\nimport { getContentLengthPlugin } from \"@aws-sdk/middleware-content-length\";\nimport { getHostHeaderPlugin, resolveHostHeaderConfig } from \"@aws-sdk/middleware-host-header\";\nimport { getRetryPlugin, resolveRetryConfig } from \"@aws-sdk/middleware-retry\";\nimport { resolveAwsAuthConfig } from \"@aws-sdk/middleware-signing\";\nimport { getUserAgentPlugin, resolveUserAgentConfig } from \"@aws-sdk/middleware-user-agent\";\nimport { Client as __Client } from \"@aws-sdk/smithy-client\";\n/**\n * Amazon Cognito Federated Identities\n *

Amazon Cognito Federated Identities is a web service that delivers scoped temporary\n * credentials to mobile devices and other untrusted environments. It uniquely identifies a\n * device and supplies the user with a consistent identity over the lifetime of an\n * application.

\n *

Using Amazon Cognito Federated Identities, you can enable authentication with one or\n * more third-party identity providers (Facebook, Google, or Login with Amazon) or an Amazon\n * Cognito user pool, and you can also choose to support unauthenticated access from your app.\n * Cognito delivers a unique identifier for each user and acts as an OpenID token provider\n * trusted by AWS Security Token Service (STS) to access temporary, limited-privilege AWS\n * credentials.

\n *

For a description of the authentication flow from the Amazon Cognito Developer Guide\n * see Authentication Flow.

\n *

For more information see Amazon Cognito Federated Identities.

\n */\nvar CognitoIdentityClient = /** @class */ (function (_super) {\n __extends(CognitoIdentityClient, _super);\n function CognitoIdentityClient(configuration) {\n var _this = this;\n var _config_0 = __assign(__assign({}, __ClientDefaultValues), configuration);\n var _config_1 = resolveRegionConfig(_config_0);\n var _config_2 = resolveEndpointsConfig(_config_1);\n var _config_3 = resolveAwsAuthConfig(_config_2);\n var _config_4 = resolveRetryConfig(_config_3);\n var _config_5 = resolveUserAgentConfig(_config_4);\n var _config_6 = resolveHostHeaderConfig(_config_5);\n _this = _super.call(this, _config_6) || this;\n _this.config = _config_6;\n _this.middlewareStack.use(getRetryPlugin(_this.config));\n _this.middlewareStack.use(getUserAgentPlugin(_this.config));\n _this.middlewareStack.use(getContentLengthPlugin(_this.config));\n _this.middlewareStack.use(getHostHeaderPlugin(_this.config));\n return _this;\n }\n CognitoIdentityClient.prototype.destroy = function () { };\n return CognitoIdentityClient;\n}(__Client));\nexport { CognitoIdentityClient };\n//# sourceMappingURL=CognitoIdentityClient.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { ConsoleLogger as Logger } from './Logger';\nimport { StorageHelper } from './StorageHelper';\nimport { makeQuerablePromise } from './JS';\nimport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nimport { getAmplifyUserAgent } from './Platform';\nimport { Amplify } from './Amplify';\nimport { fromCognitoIdentity, fromCognitoIdentityPool, } from '@aws-sdk/credential-provider-cognito-identity';\nimport { CognitoIdentityClient, GetIdCommand, } from '@aws-sdk/client-cognito-identity';\nvar logger = new Logger('Credentials');\nvar CREDENTIALS_TTL = 50 * 60 * 1000; // 50 min, can be modified on config if required in the future\nvar CredentialsClass = /** @class */ (function () {\n function CredentialsClass(config) {\n this._gettingCredPromise = null;\n this._refreshHandlers = {};\n this.configure(config);\n this._refreshHandlers['google'] = GoogleOAuth.refreshGoogleToken;\n this._refreshHandlers['facebook'] = FacebookOAuth.refreshFacebookToken;\n }\n CredentialsClass.prototype.getCredSource = function () {\n return this._credentials_source;\n };\n CredentialsClass.prototype.configure = function (config) {\n if (!config)\n return this._config || {};\n this._config = Object.assign({}, this._config, config);\n var refreshHandlers = this._config.refreshHandlers;\n // If the developer has provided an object of refresh handlers,\n // then we can merge the provided handlers with the current handlers.\n if (refreshHandlers) {\n this._refreshHandlers = __assign(__assign({}, this._refreshHandlers), refreshHandlers);\n }\n this._storage = this._config.storage;\n if (!this._storage) {\n this._storage = new StorageHelper().getStorage();\n }\n this._storageSync = Promise.resolve();\n if (typeof this._storage['sync'] === 'function') {\n this._storageSync = this._storage['sync']();\n }\n return this._config;\n };\n CredentialsClass.prototype.get = function () {\n logger.debug('getting credentials');\n return this._pickupCredentials();\n };\n CredentialsClass.prototype._pickupCredentials = function () {\n logger.debug('picking up credentials');\n if (!this._gettingCredPromise || !this._gettingCredPromise.isPending()) {\n logger.debug('getting new cred promise');\n this._gettingCredPromise = makeQuerablePromise(this._keepAlive());\n }\n else {\n logger.debug('getting old cred promise');\n }\n return this._gettingCredPromise;\n };\n CredentialsClass.prototype._keepAlive = function () {\n logger.debug('checking if credentials exists and not expired');\n var cred = this._credentials;\n if (cred && !this._isExpired(cred)) {\n logger.debug('credentials not changed and not expired, directly return');\n return Promise.resolve(cred);\n }\n logger.debug('need to get a new credential or refresh the existing one');\n if (Amplify.Auth &&\n typeof Amplify.Auth.currentUserCredentials === 'function') {\n return Amplify.Auth.currentUserCredentials();\n }\n else {\n return Promise.reject('No Auth module registered in Amplify');\n }\n };\n CredentialsClass.prototype.refreshFederatedToken = function (federatedInfo) {\n var _this = this;\n logger.debug('Getting federated credentials');\n var provider = federatedInfo.provider, user = federatedInfo.user;\n var token = federatedInfo.token, expires_at = federatedInfo.expires_at, identity_id = federatedInfo.identity_id;\n // Make sure expires_at is in millis\n expires_at =\n new Date(expires_at).getFullYear() === 1970\n ? expires_at * 1000\n : expires_at;\n var that = this;\n logger.debug('checking if federated jwt token expired');\n if (expires_at > new Date().getTime()) {\n // if not expired\n logger.debug('token not expired');\n return this._setCredentialsFromFederation({\n provider: provider,\n token: token,\n user: user,\n identity_id: identity_id,\n expires_at: expires_at,\n });\n }\n else {\n // if refresh handler exists\n if (that._refreshHandlers[provider] &&\n typeof that._refreshHandlers[provider] === 'function') {\n logger.debug('getting refreshed jwt token from federation provider');\n return that._refreshHandlers[provider]()\n .then(function (data) {\n logger.debug('refresh federated token sucessfully', data);\n token = data.token;\n identity_id = data.identity_id;\n expires_at = data.expires_at;\n return that._setCredentialsFromFederation({\n provider: provider,\n token: token,\n user: user,\n identity_id: identity_id,\n expires_at: expires_at,\n });\n })\n .catch(function (e) {\n logger.debug('refresh federated token failed', e);\n _this.clear();\n return Promise.reject('refreshing federation token failed: ' + e);\n });\n }\n else {\n logger.debug('no refresh handler for provider:', provider);\n this.clear();\n return Promise.reject('no refresh handler for provider');\n }\n }\n };\n CredentialsClass.prototype._isExpired = function (credentials) {\n if (!credentials) {\n logger.debug('no credentials for expiration check');\n return true;\n }\n logger.debug('are these credentials expired?', credentials);\n var ts = Date.now();\n var delta = 10 * 60 * 1000; // 10 minutes in milli seconds\n /* returns date object.\n https://github.com/aws/aws-sdk-js-v3/blob/v1.0.0-beta.1/packages/types/src/credentials.ts#L26\n */\n var expiration = credentials.expiration;\n if (expiration.getTime() > ts + delta &&\n ts < this._nextCredentialsRefresh) {\n return false;\n }\n return true;\n };\n CredentialsClass.prototype._setCredentialsForGuest = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, identityPoolId, region, mandatorySignIn, identityId, e_1, cognitoClient, credentials, cognitoIdentityParams, credentialsProvider;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('setting credentials for guest');\n _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region, mandatorySignIn = _a.mandatorySignIn;\n if (mandatorySignIn) {\n return [2 /*return*/, Promise.reject('cannot get guest credentials when mandatory signin enabled')];\n }\n if (!identityPoolId) {\n logger.debug('No Cognito Identity pool provided for unauthenticated access');\n return [2 /*return*/, Promise.reject('No Cognito Identity pool provided for unauthenticated access')];\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return [2 /*return*/, Promise.reject('region is not configured for getting the credentials')];\n }\n identityId = undefined;\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _b.sent();\n identityId = this._storage.getItem('CognitoIdentityId-' + identityPoolId);\n this._identityId = identityId;\n return [3 /*break*/, 4];\n case 3:\n e_1 = _b.sent();\n logger.debug('Failed to get the cached identityId', e_1);\n return [3 /*break*/, 4];\n case 4:\n cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n credentials = undefined;\n if (identityId) {\n cognitoIdentityParams = {\n identityId: identityId,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentity(cognitoIdentityParams)();\n }\n else {\n credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, cognitoIdentityParams, credentialsFromCognitoIdentity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, cognitoClient.send(new GetIdCommand({\n IdentityPoolId: identityPoolId,\n }))];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n cognitoIdentityParams = {\n client: cognitoClient,\n identityId: IdentityId,\n };\n credentialsFromCognitoIdentity = fromCognitoIdentity(cognitoIdentityParams);\n return [2 /*return*/, credentialsFromCognitoIdentity()];\n }\n });\n }); };\n credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n }\n return [2 /*return*/, this._loadCredentials(credentials, 'guest', false, null)\n .then(function (res) {\n return res;\n })\n .catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, e];\n });\n }); })];\n }\n });\n });\n };\n CredentialsClass.prototype._setCredentialsFromFederation = function (params) {\n var provider = params.provider, token = params.token, identity_id = params.identity_id;\n var domains = {\n google: 'accounts.google.com',\n facebook: 'graph.facebook.com',\n amazon: 'www.amazon.com',\n developer: 'cognito-identity.amazonaws.com',\n };\n // Use custom provider url instead of the predefined ones\n var domain = domains[provider] || provider;\n if (!domain) {\n return Promise.reject('You must specify a federated provider');\n }\n var logins = {};\n logins[domain] = token;\n var _a = this._config, identityPoolId = _a.identityPoolId, region = _a.region;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n var credentials = undefined;\n if (identity_id) {\n var cognitoIdentityParams = {\n identityId: identity_id,\n logins: logins,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentity(cognitoIdentityParams)();\n }\n else {\n var cognitoIdentityParams = {\n logins: logins,\n identityPoolId: identityPoolId,\n client: cognitoClient,\n };\n credentials = fromCognitoIdentityPool(cognitoIdentityParams)();\n }\n return this._loadCredentials(credentials, 'federated', true, params);\n };\n CredentialsClass.prototype._setCredentialsFromSession = function (session) {\n var _this = this;\n logger.debug('set credentials from session');\n var idToken = session.getIdToken().getJwtToken();\n var _a = this._config, region = _a.region, userPoolId = _a.userPoolId, identityPoolId = _a.identityPoolId;\n if (!identityPoolId) {\n logger.debug('No Cognito Federated Identity pool provided');\n return Promise.reject('No Cognito Federated Identity pool provided');\n }\n if (!region) {\n logger.debug('region is not configured for getting the credentials');\n return Promise.reject('region is not configured for getting the credentials');\n }\n var key = 'cognito-idp.' + region + '.amazonaws.com/' + userPoolId;\n var logins = {};\n logins[key] = idToken;\n var cognitoClient = new CognitoIdentityClient({\n region: region,\n customUserAgent: getAmplifyUserAgent(),\n });\n /*\n Retreiving identityId with GetIdCommand to mimic the behavior in the following code in aws-sdk-v3:\n https://git.io/JeDxU\n\n Note: Retreive identityId from CredentialsProvider once aws-sdk-js v3 supports this.\n */\n var credentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var IdentityId, cognitoIdentityParams, credentialsFromCognitoIdentity;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, cognitoClient.send(new GetIdCommand({\n IdentityPoolId: identityPoolId,\n Logins: logins,\n }))];\n case 1:\n IdentityId = (_a.sent()).IdentityId;\n this._identityId = IdentityId;\n cognitoIdentityParams = {\n client: cognitoClient,\n logins: logins,\n identityId: IdentityId,\n };\n credentialsFromCognitoIdentity = fromCognitoIdentity(cognitoIdentityParams);\n return [2 /*return*/, credentialsFromCognitoIdentity()];\n }\n });\n }); };\n var credentials = credentialsProvider().catch(function (err) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw err;\n });\n }); });\n return this._loadCredentials(credentials, 'userPool', true, null);\n };\n CredentialsClass.prototype._loadCredentials = function (credentials, source, authenticated, info) {\n var _this = this;\n var that = this;\n var identityPoolId = this._config.identityPoolId;\n return new Promise(function (res, rej) {\n credentials\n .then(function (credentials) { return __awaiter(_this, void 0, void 0, function () {\n var user, provider, token, expires_at, identity_id, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug('Load credentials successfully', credentials);\n if (this._identityId && !credentials.identityId) {\n credentials['identityId'] = this._identityId;\n }\n that._credentials = credentials;\n that._credentials.authenticated = authenticated;\n that._credentials_source = source;\n that._nextCredentialsRefresh = new Date().getTime() + CREDENTIALS_TTL;\n if (source === 'federated') {\n user = Object.assign({ id: this._credentials.identityId }, info.user);\n provider = info.provider, token = info.token, expires_at = info.expires_at, identity_id = info.identity_id;\n try {\n this._storage.setItem('aws-amplify-federatedInfo', JSON.stringify({\n provider: provider,\n token: token,\n user: user,\n expires_at: expires_at,\n identity_id: identity_id,\n }));\n }\n catch (e) {\n logger.debug('Failed to put federated info into auth storage', e);\n }\n }\n if (!(source === 'guest')) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._storageSync];\n case 2:\n _a.sent();\n this._storage.setItem('CognitoIdentityId-' + identityPoolId, credentials.identityId // TODO: IdentityId is currently not returned by fromCognitoIdentityPool()\n );\n return [3 /*break*/, 4];\n case 3:\n e_2 = _a.sent();\n logger.debug('Failed to cache identityId', e_2);\n return [3 /*break*/, 4];\n case 4:\n res(that._credentials);\n return [2 /*return*/];\n }\n });\n }); })\n .catch(function (err) {\n if (err) {\n logger.debug('Failed to load credentials', credentials);\n rej(err);\n return;\n }\n });\n });\n };\n CredentialsClass.prototype.set = function (params, source) {\n if (source === 'session') {\n return this._setCredentialsFromSession(params);\n }\n else if (source === 'federation') {\n return this._setCredentialsFromFederation(params);\n }\n else if (source === 'guest') {\n return this._setCredentialsForGuest();\n }\n else {\n logger.debug('no source specified for setting credentials');\n return Promise.reject('invalid source');\n }\n };\n CredentialsClass.prototype.clear = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._credentials = null;\n this._credentials_source = null;\n this._storage.removeItem('aws-amplify-federatedInfo');\n return [2 /*return*/];\n });\n });\n };\n /**\n * Compact version of credentials\n * @param {Object} credentials\n * @return {Object} - Credentials\n */\n CredentialsClass.prototype.shear = function (credentials) {\n return {\n accessKeyId: credentials.accessKeyId,\n sessionToken: credentials.sessionToken,\n secretAccessKey: credentials.secretAccessKey,\n identityId: credentials.identityId,\n authenticated: credentials.authenticated,\n };\n };\n return CredentialsClass;\n}());\nexport { CredentialsClass };\nexport var Credentials = new CredentialsClass(null);\n/**\n * @deprecated use named import\n */\nexport default Credentials;\n//# sourceMappingURL=Credentials.js.map","\"use strict\";\n\nvar removeHash = function removeHash(hex) {\n return hex.charAt(0) === '#' ? hex.slice(1) : hex;\n};\n\nvar parseHex = function parseHex(nakedHex) {\n var isShort = nakedHex.length === 3 || nakedHex.length === 4;\n var twoDigitHexR = isShort ? \"\".concat(nakedHex.slice(0, 1)).concat(nakedHex.slice(0, 1)) : nakedHex.slice(0, 2);\n var twoDigitHexG = isShort ? \"\".concat(nakedHex.slice(1, 2)).concat(nakedHex.slice(1, 2)) : nakedHex.slice(2, 4);\n var twoDigitHexB = isShort ? \"\".concat(nakedHex.slice(2, 3)).concat(nakedHex.slice(2, 3)) : nakedHex.slice(4, 6);\n var twoDigitHexA = (isShort ? \"\".concat(nakedHex.slice(3, 4)).concat(nakedHex.slice(3, 4)) : nakedHex.slice(6, 8)) || 'ff'; // const numericA = +((parseInt(a, 16) / 255).toFixed(2));\n\n return {\n r: twoDigitHexR,\n g: twoDigitHexG,\n b: twoDigitHexB,\n a: twoDigitHexA\n };\n};\n\nvar hexToDecimal = function hexToDecimal(hex) {\n return parseInt(hex, 16);\n};\n\nvar hexesToDecimals = function hexesToDecimals(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b,\n a = _ref.a;\n return {\n r: hexToDecimal(r),\n g: hexToDecimal(g),\n b: hexToDecimal(b),\n a: +(hexToDecimal(a) / 255).toFixed(2)\n };\n};\n\nvar isNumeric = function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}; // eslint-disable-line no-restricted-globals, max-len\n\n\nvar formatRgb = function formatRgb(decimalObject, parameterA) {\n var r = decimalObject.r,\n g = decimalObject.g,\n b = decimalObject.b,\n parsedA = decimalObject.a;\n var a = isNumeric(parameterA) ? parameterA : parsedA;\n return \"rgba(\".concat(r, \", \").concat(g, \", \").concat(b, \", \").concat(a, \")\");\n};\n/**\n * Turns an old-fashioned css hex color value into a rgb color value.\n *\n * If you specify an alpha value, you'll get a rgba() value instead.\n *\n * @param The hex value to convert. ('123456'. '#123456', ''123', '#123')\n * @param An alpha value to apply. (optional) ('0.5', '0.25')\n * @return An rgb or rgba value. ('rgb(11, 22, 33)'. 'rgba(11, 22, 33, 0.5)')\n */\n\n\nvar hexToRgba = function hexToRgba(hex, a) {\n var hashlessHex = removeHash(hex);\n var hexObject = parseHex(hashlessHex);\n var decimalObject = hexesToDecimals(hexObject);\n return formatRgb(decimalObject, a);\n};\n\nmodule.exports = hexToRgba;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\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","/**\n * @license\n * Lodash \n * Copyright OpenJS 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;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\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 */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\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 */\n function 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 timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\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 clearTimeout(timerId);\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 * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` 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 throttled 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 `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\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 array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\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 a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\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 a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\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 a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\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 */\n function 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 = baseTrim(value);\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\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '